X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Frmr%2Fcommon%2Finclude%2Frmr_agnostic.h;h=cb8114f4541ee01126e8f3d98a021d52dd570597;hb=05ce11d8c370a66c238b1db3fff1fde4790fa701;hp=df4a3169f96d9c2a07142d2442578d8e2d3a2357;hpb=0b79fc264eea2591ad6f645d0c90cc378ea5603b;p=ric-plt%2Flib%2Frmr.git diff --git a/src/rmr/common/include/rmr_agnostic.h b/src/rmr/common/include/rmr_agnostic.h index df4a316..cb8114f 100644 --- a/src/rmr/common/include/rmr_agnostic.h +++ b/src/rmr/common/include/rmr_agnostic.h @@ -29,6 +29,8 @@ #ifndef _rmr_agnostic_h #define _rmr_agnostic_h +#include // needed to support some structs + typedef struct endpoint endpoint_t; // place holder for structs defined in nano/nng private.h typedef struct uta_ctx uta_ctx_t; @@ -53,15 +55,17 @@ typedef struct uta_ctx uta_ctx_t; #define RMR_MSG_VER 3 // message version this code was designed to handle // environment variable names we'll suss out -#define ENV_BIND_IF "RMR_BIND_IF" // the interface to bind to for both normal comma and RTG (0.0.0.0 if missing) -#define ENV_RTG_PORT "RMR_RTG_SVC" // the port we'll listen on for rtg connections -#define ENV_SEED_RT "RMR_SEED_RT" // where we expect to find the name of the seed route table +#define ENV_BIND_IF "RMR_BIND_IF" // the interface to bind to for both normal comma and RTG (0.0.0.0 if missing) +#define ENV_RTG_PORT "RMR_RTG_SVC" // the port we'll listen on for rtg connections +#define ENV_SEED_RT "RMR_SEED_RT" // where we expect to find the name of the seed route table #define ENV_SEED_MEMAP "RMR_SEED_MEMAP" // where we expect to find the name of the seed route table -#define ENV_RTG_RAW "RMR_RTG_ISRAW" // if > 0 we expect route table gen messages as raw (not sent from an RMr application) +#define ENV_RTG_RAW "RMR_RTG_ISRAW" // if > 0 we expect route table gen messages as raw (not sent from an RMr application) #define ENV_VERBOSE_FILE "RMR_VCTL_FILE" // file where vlevel may be managed for some (non-time critical) functions -#define ENV_NAME_ONLY "RMR_SRC_NAMEONLY" // src in message is name only +#define ENV_NAME_ONLY "RMR_SRC_NAMEONLY" // src in message is name only #define ENV_WARNINGS "RMR_WARNINGS" // if == 1 then we write some, non-performance impacting, warnings #define ENV_SRC_ID "RMR_SRC_ID" // forces this string (adding :port, max 63 ch) into the source field; host name used if not set +#define ENV_LOG_HR "RMR_HR_LOG" // set to 0 to turn off human readable logging and write using some formatting +#define ENV_LOG_VLEVEL "RMR_LOG_VLEVEL" // set the verbosity level (0 == 0ff; 1 == crit .... 5 == debug ) #define NO_FLAGS 0 // no flags to pass to a function @@ -238,11 +242,18 @@ typedef struct { // --------------- ring things ------------------------------------------------- +#define RING_NONE 0 // no options +#define RING_RLOCK 0x01 // create/destroy the read lock on the ring +#define RING_WLOCK 0x02 // create/destroy the write lockk on the ring + typedef struct ring { uint16_t head; // index of the head of the ring (insert point) uint16_t tail; // index of the tail (extract point) uint16_t nelements; // number of elements in the ring void** data; // the ring data (pointers to blobs of stuff) + int pfd; // event fd for the ring for epoll + pthread_mutex_t* rgate; // read lock if used + pthread_mutex_t* wgate; // write lock if used } ring_t; @@ -272,6 +283,7 @@ static char* get_default_ip( if_addrs_t* iplist ); // --- message ring -------------------------- static void* uta_mk_ring( int size ); +static int uta_ring_config( void* vr, int options ); static void uta_ring_free( void* vr ); static inline void* uta_ring_extract( void* vr ); static inline int uta_ring_insert( void* vr, void* new_data );