revert Update release tag to 4.0.10
[ric-plt/e2.git] / RIC-E2-TERMINATION / sctpThread.h
index 543c94c..ebfda28 100644 (file)
@@ -50,6 +50,7 @@
 #include <map>
 #include <sys/inotify.h>
 #include <csignal>
+#include <future>
 
 #include <rmr/rmr.h>
 #include <rmr/RIC_message_types.h>
 
 #include "cxxopts.hpp"
 //#include "config-cpp/include/config-cpp/config-cpp.h"
+#include <zlib.h>
+#include <prometheus/counter.h>
+#include <prometheus/exposer.h>
+#include <prometheus/gateway.h>
+#include <prometheus/registry.h>
 
-#ifdef __TRACING__
-#include "openTracing.h"
-#endif
+using namespace prometheus;
 
 #include "mapWrapper.h"
 
@@ -108,16 +112,18 @@ namespace expr = boost::log::expressions;
 
 #define MAXEVENTS 128
 
-#define RECEIVE_SCTP_BUFFER_SIZE (8 * 1024)
-#define RECEIVE_XAPP_BUFFER_SIZE RECEIVE_SCTP_BUFFER_SIZE 
+#define RECEIVE_SCTP_BUFFER_SIZE (256 * 1024)
+#define RECEIVE_XAPP_BUFFER_SIZE RECEIVE_SCTP_BUFFER_SIZE
 
 typedef mapWrapper Sctp_Map_t;
 
 
+
 #define VOLUME_URL_SIZE 256
 #define KA_MESSAGE_SIZE 2048
 
 typedef struct sctp_params {
+    int      epollTimeOut = -1;
     uint16_t rmrPort = 0;
     uint16_t sctpPort = SRC_PORT;
     int      epoll_fd = 0;
@@ -138,9 +144,28 @@ typedef struct sctp_params {
     string configFilePath {};
     string configFileName {};
     bool trace = true;
-    //shared_timed_mutex fence; // moved to mapWrapper
+    string prometheusMode {"pull"};
+    string prometheusPushAddress {"127.0.0.1:7676"};
+    shared_ptr<prometheus::Registry> prometheusRegistry;
+    string prometheusPort {"8088"};
+    Family<Counter> *prometheusFamily;
+    Gateway *prometheusGateway = nullptr;
+    Exposer *prometheusExposer = nullptr;
 } sctp_params_t;
 
+// RAN to RIC
+#define IN_INITI 0 //INITIATING
+#define IN_SUCC 1 //SUCCESSFULL
+#define IN_UN_SUCC 2 //UN-Successfull
+
+// RIC To RAN
+#define OUT_INITI 3 //INITIATING
+#define OUT_SUCC 4 //SUCCESSFULL
+#define OUT_UN_SUCC 5 //UN-Successfull
+
+#define MSG_COUNTER 0
+#define BYTES_COUNTER 1
+
 typedef struct ConnectedCU {
     int fileDescriptor = 0;
     char hostName[NI_MAXHOST] {};
@@ -152,17 +177,19 @@ typedef struct ConnectedCU {
     bool isConnected = false;
     bool gotSetup = false;
     sctp_params_t *sctpParams = nullptr;
+    Counter *counters[6][2][ProcedureCode_id_RICsubscriptionDelete + 1] {};
 } ConnectedCU_t ;
 
+
 #define MAX_RMR_BUFF_ARRY 32
 typedef struct RmrMessagesBuffer {
     char ka_message[KA_MESSAGE_SIZE] {};
     int  ka_message_len = 0;
     void *rmrCtx = nullptr;
     rmr_mbuf_t *sendMessage= nullptr;
-    rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRY] {};
+    //rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRY] {};
     rmr_mbuf_t *rcvMessage= nullptr;
-    rmr_mbuf_t *rcvBufferedMessages[MAX_RMR_BUFF_ARRY] {};
+    //rmr_mbuf_t *rcvBufferedMessages[MAX_RMR_BUFF_ARRY] {};
 } RmrMessagesBuffer_t;
 
 typedef struct formatedMessage {
@@ -209,7 +236,6 @@ void handlepoll_error(struct epoll_event &event,
 
 void cleanHashEntry(ConnectedCU_t *peerInfo, Sctp_Map_t *m);
 
-int getSetupRequestMetaData(ReportingMessages_t &message, char *data, char *host, uint16_t &port);
 
 /**
  *
@@ -297,24 +323,10 @@ void getRmrContext(sctp_params_t &pSctpParams);
  * @param messagBuffer
  * @return
  */
-int receiveXappMessages(int epoll_fd,
-                        Sctp_Map_t *sctpMap,
+int receiveXappMessages(Sctp_Map_t *sctpMap,
                         RmrMessagesBuffer_t &rmrMessageBuffer,
                         struct timespec &ts);
 
-/**
- *
- * @param rmrMessageBuffer
- * @param message
- * @param epoll_fd
- * @param sctpMap
- * @return
- */
-int connectToCUandSetUp(RmrMessagesBuffer_t &rmrMessageBuffer,
-                           ReportingMessages_t &message,
-                           int epoll_fd,
-                           Sctp_Map_t *sctpMap);
-
 /**
  *
  * @param messagBuffer
@@ -333,6 +345,7 @@ int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messagBuffer,
  * @param rmrMessageBuffer
  */
 void asnInitiatingRequest(E2AP_PDU_t *pdu,
+                          Sctp_Map_t *sctpMap,
                           ReportingMessages_t &message,
                           RmrMessagesBuffer_t &rmrMessageBuffer);
 /**
@@ -343,8 +356,8 @@ void asnInitiatingRequest(E2AP_PDU_t *pdu,
  * @param rmrMessageBuffer
  */
 void asnSuccsesfulMsg(E2AP_PDU_t *pdu,
-                      ReportingMessages_t &message,
                       Sctp_Map_t *sctpMap,
+                      ReportingMessages_t &message,
                       RmrMessagesBuffer_t &rmrMessageBuffer);
 /**
  *
@@ -354,8 +367,8 @@ void asnSuccsesfulMsg(E2AP_PDU_t *pdu,
  * @param rmrMessageBuffer
  */
 void asnUnSuccsesfulMsg(E2AP_PDU_t *pdu,
-                        ReportingMessages_t &message,
                         Sctp_Map_t *sctpMap,
+                        ReportingMessages_t &message,
                         RmrMessagesBuffer_t &rmrMessageBuffer);
 
 /**