| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | /*** Copyright 2015, Google Inc.* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions are* met:**     * Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.*     * Redistributions in binary form must reproduce the above* copyright notice, this list of conditions and the following disclaimer* in the documentation and/or other materials provided with the* distribution.*     * Neither the name of Google Inc. nor the names of its* contributors may be used to endorse or promote products derived from* this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**/#ifndef GRPCXX_IMPL_CODEGEN_METADATA_MAP_H#define GRPCXX_IMPL_CODEGEN_METADATA_MAP_H#include <grpc++/impl/codegen/slice.h>namespace grpc {class MetadataMap { public:  MetadataMap() { memset(&arr_, 0, sizeof(arr_)); }  ~MetadataMap() {    g_core_codegen_interface->grpc_metadata_array_destroy(&arr_);  }  void FillMap() {    for (size_t i = 0; i < arr_.count; i++) {      // TODO(yangg) handle duplicates?      map_.insert(std::pair<grpc::string_ref, grpc::string_ref>(          StringRefFromSlice(&arr_.metadata[i].key),          StringRefFromSlice(&arr_.metadata[i].value)));    }  }  std::multimap<grpc::string_ref, grpc::string_ref> *map() { return &map_; }  const std::multimap<grpc::string_ref, grpc::string_ref> *map() const {    return &map_;  }  grpc_metadata_array *arr() { return &arr_; } private:  grpc_metadata_array arr_;  std::multimap<grpc::string_ref, grpc::string_ref> map_;};}  // namespace grpc#endif  // GRPCXX_IMPL_CODEGEN_METADATA_MAP_H
 |