return 0;
}
+
+
int main(const int argc, char **argv) {
sctp_params_t sctpParams;
}
}
+ auto statFlag = false;
+ auto statThread = std::thread(statColectorThread, (void *)&statFlag);
+
//loop over term_init until first message from xApp
handleTermInit(sctpParams);
t.join();
}
+ statFlag = true;
+ statThread.join();
+
return 0;
}
rmrMessageBuffer.sendBufferedMessages[i] = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE);
}
+ message.statCollector = StatCollector::GetInstance();
+
while (true) {
if (mdclog_level_get() >= MDCLOG_DEBUG) {
mdclog_write(MDCLOG_DEBUG, "Start EPOLL Wait");
m->erase(key);
return -1;
}
- peerInfo->sentMesgs++;
+ message.statCollector->incSentMessage(string(message.message.enodbName));
message.message.direction = 'D';
// send report.buffer of size
buildJsonMessage(message);
// get the identity of the interface
message.peerInfo = (ConnectedCU_t *)events->data.ptr;
-
+ message.statCollector = StatCollector::GetInstance();
struct timespec start{0, 0};
struct timespec decodestart{0, 0};
struct timespec end{0, 0};
mdclog_write(MDCLOG_DEBUG, "Finish Read from SCTP %d fd message length = %ld",
message.peerInfo->fileDescriptor, message.message.asnLength);
}
- message.peerInfo->rcvMsgs++;
+
memcpy(message.message.enodbName, message.peerInfo->enodbName, sizeof(message.peerInfo->enodbName));
+ message.statCollector->incRecvMessage(string(message.message.enodbName));
message.message.direction = 'U';
message.message.time.tv_nsec = ts.tv_nsec;
message.message.time.tv_sec = ts.tv_sec;
auto *rmrMsg = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, buffer_size);
// add addrees to message
- auto j = snprintf((char *)rmrMsg->payload, 256, "%s:%d|", message.peerInfo->sctpParams->myIP.c_str(), message.peerInfo->sctpParams->rmrPort);
- unsigned char *buffer = &rmrMsg->payload[j];
+ // unsigned char *buffer = &rmrMsg->payload[j];
+ unsigned char buffer[RECEIVE_SCTP_BUFFER_SIZE];
// encode to xml
asn_enc_rval_t er;
- er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size - j);
+ er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size);
if (er.encoded == -1) {
mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2AP_PDU.name, strerror(errno));
} else if (er.encoded > (ssize_t) buffer_size) {
(int) buffer_size,
asn_DEF_E2AP_PDU.name);
} else {
- if (logLevel >= MDCLOG_DEBUG) {
- mdclog_write(MDCLOG_DEBUG, "Buffer of size %d, data = %s", (int) er.encoded, buffer);
+ rmrMsg->len = snprintf((char *)rmrMsg->payload, RECEIVE_SCTP_BUFFER_SIZE, "%s:%d|%s",
+ message.peerInfo->sctpParams->myIP.c_str(),
+ message.peerInfo->sctpParams->rmrPort,
+ buffer);
+ if (logLevel >= MDCLOG_INFO) {
+ mdclog_write(MDCLOG_INFO, "Setup request : %s\n", buffer);
}
// send to RMR
message.message.messageType = rmrMsg->mtype = RIC_E2_SETUP_REQ;
}
message.peerInfo->gotSetup = true;
buildJsonMessage(message);
+ if (rmrMsg != nullptr) {
+ rmr_free_msg(rmrMsg);
+ }
}
}
} else if (rmrMessageBuffer.sendMessage->state != 0) {
mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP, on RMR state = %d ( %s)",
rmrMessageBuffer.sendMessage->state, translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str());
- } else if (mdclog_level_get() >= MDCLOG_INFO) {
- mdclog_write(MDCLOG_INFO, "Got Keep Alive Request send : %s", rmrMessageBuffer.ka_message);
+ } else if (mdclog_level_get() >= MDCLOG_DEBUG) {
+ mdclog_write(MDCLOG_DEBUG, "Got Keep Alive Request send : %s", rmrMessageBuffer.ka_message);
}
break;