GRPC C++  1.39.1
Data Structures | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
metadata.h File Reference
#include <grpc/support/port_platform.h>
#include <grpc/impl/codegen/log.h>
#include <grpc/grpc.h>
#include <grpc/slice.h>
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/atomic.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/slice/slice_utils.h"

Go to the source code of this file.

Data Structures

struct  grpc_mdelem_data
 
struct  grpc_mdelem
 
struct  grpc_core::UserData
 
class  grpc_core::StaticMetadata
 
class  grpc_core::RefcountedMdBase
 
class  grpc_core::InternedMetadata
 
struct  grpc_core::InternedMetadata::NoRefKey
 
struct  grpc_core::InternedMetadata::BucketLink
 
class  grpc_core::AllocatedMetadata
 
struct  grpc_core::AllocatedMetadata::NoRefKey
 

Namespaces

 grpc_core
 Round Robin Policy.
 

Macros

#define GRPC_MDELEM_STORAGE_INTERNED_BIT   1
 
#define GRPC_MDELEM_DATA(md)   ((grpc_mdelem_data*)((md).payload & ~(uintptr_t)3))
 
#define GRPC_MDELEM_STORAGE(md)    ((grpc_mdelem_data_storage)((md).payload & (uintptr_t)3))
 
#define GRPC_MAKE_MDELEM(data, storage)    ((grpc_mdelem){((uintptr_t)(data)) | ((uintptr_t)(storage))})
 
#define GRPC_MDELEM_IS_INTERNED(md)
 
#define GRPC_MDKEY(md)   (GRPC_MDELEM_DATA(md)->key)
 
#define GRPC_MDVALUE(md)   (GRPC_MDELEM_DATA(md)->value)
 
#define GRPC_MDISNULL(md)   (GRPC_MDELEM_DATA(md) == NULL)
 
#define GRPC_MDELEM_REF(s)   grpc_mdelem_ref((s), __FILE__, __LINE__)
 
#define GRPC_MDELEM_UNREF(s)   grpc_mdelem_unref((s), __FILE__, __LINE__)
 
#define GRPC_MDNULL   GRPC_MAKE_MDELEM(NULL, GRPC_MDELEM_STORAGE_EXTERNAL)
 
#define GRPC_MDELEM_LENGTH(e)
 
#define GRPC_MDSTR_KV_HASH(k_hash, v_hash)   (GPR_ROTL((k_hash), 2) ^ (v_hash))
 

Typedefs

typedef struct grpc_mdelem grpc_mdelem
 
typedef struct grpc_mdelem_data grpc_mdelem_data
 
typedef void(* grpc_core::destroy_user_data_func) (void *data)
 

Enumerations

enum  grpc_mdelem_data_storage { GRPC_MDELEM_STORAGE_EXTERNAL = 0 , GRPC_MDELEM_STORAGE_STATIC = 1 , GRPC_MDELEM_STORAGE_ALLOCATED = 2 , GRPC_MDELEM_STORAGE_INTERNED = 2 | 1 }
 

Functions

grpc_mdelem grpc_mdelem_from_slices (const grpc_slice &key, const grpc_slice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::StaticMetadataSlice &key, const grpc_slice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::StaticMetadataSlice &key, const grpc_core::StaticMetadataSlice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::StaticMetadataSlice &key, const grpc_core::ManagedMemorySlice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::ManagedMemorySlice &key, const grpc_core::ManagedMemorySlice &value)
 
grpc_mdelem grpc_mdelem_from_grpc_metadata (grpc_metadata *metadata)
 
grpc_mdelem grpc_mdelem_create (const grpc_slice &key, const grpc_slice &value, grpc_mdelem_data *compatible_external_backing_store)
 
grpc_mdelem grpc_mdelem_create (const grpc_core::StaticMetadataSlice &key, const grpc_slice &value, grpc_mdelem_data *compatible_external_backing_store)
 
bool grpc_mdelem_eq (grpc_mdelem a, grpc_mdelem b)
 
bool grpc_mdelem_static_value_eq (grpc_mdelem a, grpc_mdelem b_static)
 
bool grpc_mdelem_both_interned_eq (grpc_mdelem a_interned, grpc_mdelem b_interned)
 
void * grpc_mdelem_get_user_data (grpc_mdelem md, void(*if_destroy_func)(void *))
 
void * grpc_mdelem_set_user_data (grpc_mdelem md, void(*destroy_func)(void *), void *data)
 
void grpc_mdelem_trace_ref (void *md, const grpc_slice &key, const grpc_slice &value, intptr_t refcnt, const char *file, int line)
 
void grpc_mdelem_trace_unref (void *md, const grpc_slice &key, const grpc_slice &value, intptr_t refcnt, const char *file, int line)
 
grpc_mdelem grpc_mdelem_ref (grpc_mdelem gmd, const char *file, int line)
 
void grpc_mdelem_on_final_unref (grpc_mdelem_data_storage storage, void *ptr, uint32_t hash, const char *file, int line)
 
void grpc_mdelem_unref (grpc_mdelem gmd, const char *file, int line)
 
void grpc_mdctx_global_init (void)
 
void grpc_mdctx_global_shutdown ()
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::ManagedMemorySlice &key, const grpc_core::UnmanagedMemorySlice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::ExternallyManagedSlice &key, const grpc_core::UnmanagedMemorySlice &value)
 
grpc_mdelem grpc_mdelem_from_slices (const grpc_core::StaticMetadataSlice &key, const grpc_core::UnmanagedMemorySlice &value)
 

Variables

grpc_core::DebugOnlyTraceFlag grpc_trace_metadata
 

Macro Definition Documentation

◆ GRPC_MAKE_MDELEM

#define GRPC_MAKE_MDELEM (   data,
  storage 
)     ((grpc_mdelem){((uintptr_t)(data)) | ((uintptr_t)(storage))})

◆ GRPC_MDELEM_DATA

#define GRPC_MDELEM_DATA (   md)    ((grpc_mdelem_data*)((md).payload & ~(uintptr_t)3))

◆ GRPC_MDELEM_IS_INTERNED

#define GRPC_MDELEM_IS_INTERNED (   md)
Value:
((grpc_mdelem_data_storage)((md).payload & \
grpc_mdelem_data_storage
Definition: metadata.h:85
#define GRPC_MDELEM_STORAGE_INTERNED_BIT
Definition: metadata.h:78

◆ GRPC_MDELEM_LENGTH

#define GRPC_MDELEM_LENGTH (   e)
Value:
32)
#define GRPC_SLICE_LENGTH(slice)
Definition: slice.h:99
#define GRPC_MDKEY(md)
Definition: metadata.h:160
#define GRPC_MDVALUE(md)
Definition: metadata.h:161

◆ GRPC_MDELEM_REF

#define GRPC_MDELEM_REF (   s)    grpc_mdelem_ref((s), __FILE__, __LINE__)

◆ GRPC_MDELEM_STORAGE

#define GRPC_MDELEM_STORAGE (   md)     ((grpc_mdelem_data_storage)((md).payload & (uintptr_t)3))

◆ GRPC_MDELEM_STORAGE_INTERNED_BIT

#define GRPC_MDELEM_STORAGE_INTERNED_BIT   1

◆ GRPC_MDELEM_UNREF

#define GRPC_MDELEM_UNREF (   s)    grpc_mdelem_unref((s), __FILE__, __LINE__)

◆ GRPC_MDISNULL

#define GRPC_MDISNULL (   md)    (GRPC_MDELEM_DATA(md) == NULL)

◆ GRPC_MDKEY

#define GRPC_MDKEY (   md)    (GRPC_MDELEM_DATA(md)->key)

◆ GRPC_MDNULL

#define GRPC_MDNULL   GRPC_MAKE_MDELEM(NULL, GRPC_MDELEM_STORAGE_EXTERNAL)

◆ GRPC_MDSTR_KV_HASH

#define GRPC_MDSTR_KV_HASH (   k_hash,
  v_hash 
)    (GPR_ROTL((k_hash), 2) ^ (v_hash))

◆ GRPC_MDVALUE

#define GRPC_MDVALUE (   md)    (GRPC_MDELEM_DATA(md)->value)

Typedef Documentation

◆ grpc_mdelem

typedef struct grpc_mdelem grpc_mdelem

◆ grpc_mdelem_data

Enumeration Type Documentation

◆ grpc_mdelem_data_storage

Enumerator
GRPC_MDELEM_STORAGE_EXTERNAL 
GRPC_MDELEM_STORAGE_STATIC 
GRPC_MDELEM_STORAGE_ALLOCATED 
GRPC_MDELEM_STORAGE_INTERNED 

Function Documentation

◆ grpc_mdctx_global_init()

void grpc_mdctx_global_init ( void  )

◆ grpc_mdctx_global_shutdown()

void grpc_mdctx_global_shutdown ( )

◆ grpc_mdelem_both_interned_eq()

bool grpc_mdelem_both_interned_eq ( grpc_mdelem  a_interned,
grpc_mdelem  b_interned 
)
inline

◆ grpc_mdelem_create() [1/2]

grpc_mdelem grpc_mdelem_create ( const grpc_core::StaticMetadataSlice key,
const grpc_slice value,
grpc_mdelem_data compatible_external_backing_store 
)

◆ grpc_mdelem_create() [2/2]

grpc_mdelem grpc_mdelem_create ( const grpc_slice key,
const grpc_slice value,
grpc_mdelem_data compatible_external_backing_store 
)

◆ grpc_mdelem_eq()

bool grpc_mdelem_eq ( grpc_mdelem  a,
grpc_mdelem  b 
)

◆ grpc_mdelem_from_grpc_metadata()

grpc_mdelem grpc_mdelem_from_grpc_metadata ( grpc_metadata metadata)

◆ grpc_mdelem_from_slices() [1/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::ExternallyManagedSlice key,
const grpc_core::UnmanagedMemorySlice value 
)
inline

◆ grpc_mdelem_from_slices() [2/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::ManagedMemorySlice key,
const grpc_core::ManagedMemorySlice value 
)

◆ grpc_mdelem_from_slices() [3/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::ManagedMemorySlice key,
const grpc_core::UnmanagedMemorySlice value 
)
inline

◆ grpc_mdelem_from_slices() [4/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::StaticMetadataSlice key,
const grpc_core::ManagedMemorySlice value 
)

◆ grpc_mdelem_from_slices() [5/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::StaticMetadataSlice key,
const grpc_core::StaticMetadataSlice value 
)

◆ grpc_mdelem_from_slices() [6/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::StaticMetadataSlice key,
const grpc_core::UnmanagedMemorySlice value 
)
inline

◆ grpc_mdelem_from_slices() [7/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_core::StaticMetadataSlice key,
const grpc_slice value 
)

◆ grpc_mdelem_from_slices() [8/8]

grpc_mdelem grpc_mdelem_from_slices ( const grpc_slice key,
const grpc_slice value 
)

◆ grpc_mdelem_get_user_data()

void* grpc_mdelem_get_user_data ( grpc_mdelem  md,
void(*)(void *)  if_destroy_func 
)

◆ grpc_mdelem_on_final_unref()

void grpc_mdelem_on_final_unref ( grpc_mdelem_data_storage  storage,
void *  ptr,
uint32_t  hash,
const char *  file,
int  line 
)

◆ grpc_mdelem_ref()

grpc_mdelem grpc_mdelem_ref ( grpc_mdelem  gmd,
const char *  file,
int  line 
)
inline

◆ grpc_mdelem_set_user_data()

void* grpc_mdelem_set_user_data ( grpc_mdelem  md,
void(*)(void *)  destroy_func,
void *  data 
)

◆ grpc_mdelem_static_value_eq()

bool grpc_mdelem_static_value_eq ( grpc_mdelem  a,
grpc_mdelem  b_static 
)
inline

◆ grpc_mdelem_trace_ref()

void grpc_mdelem_trace_ref ( void *  md,
const grpc_slice key,
const grpc_slice value,
intptr_t  refcnt,
const char *  file,
int  line 
)

◆ grpc_mdelem_trace_unref()

void grpc_mdelem_trace_unref ( void *  md,
const grpc_slice key,
const grpc_slice value,
intptr_t  refcnt,
const char *  file,
int  line 
)

◆ grpc_mdelem_unref()

void grpc_mdelem_unref ( grpc_mdelem  gmd,
const char *  file,
int  line 
)
inline

Variable Documentation

◆ grpc_trace_metadata

grpc_core::DebugOnlyTraceFlag grpc_trace_metadata
extern