- // get status of id
- int req_status = get_request_status(id);
- if (req_status == request_pending ){
- res = add_subscription_entry(id, he_response);
- if(res)
- set_request_status(id, request_success);
-
- else{
- set_request_status(id, request_duplicate);
- mdclog_write(MDCLOG_ERR, "Error:: %s, %d: Request %s, %d seems to be a duplicate. Subscription already present in subscription table\n", __FILE__, __LINE__, std::get<0>(id).c_str(), std::get<1>(id));
- }
-
- valid_response = true;
- }
- else if (req_status > 0){
- // we don't change status of response since it was not in pending
- // we simply fail
- mdclog_write(MDCLOG_ERR, "Error:: %s, %d: Request %s,%d is not in request_pending state, is in State = %d\n", __FILE__, __LINE__, std::get<0>(id).c_str(), std::get<1>(id), req_status);
-
- }
- else{
- mdclog_write(MDCLOG_ERR, "%s, %d: Could not find id %s, %d in request queue for subscription", __FILE__, __LINE__, std::get<0>(id).c_str(), std::get<1>(id));
- }
-
- }
-
- }
-
- else if( procedureCode == E2N_ProcedureCode_id_ricSubscriptionDelete){
-
- res = sub_del_resp.get_fields(e2ap_recv->choice.successfulOutcome, he_response);
- {
- std::lock_guard<std::mutex> lock(*(_data_lock.get()));
-
- // get the id
- subscription_identifier id = std::make_tuple (node, he_response.get_request_id());
-
- int req_status = get_request_status(id);
- if (req_status == delete_request_pending ){
- // Remove the subscription from the table
- res = delete_subscription_entry(id);
- if(res){
- set_request_status(id, delete_request_success);
- valid_response = true;
- }
- else{
- set_request_status(id, delete_request_failed);
- mdclog_write(MDCLOG_ERR, "%s, %d: Error deleting subscription entry for %s, %d", __FILE__, __LINE__, std::get<0>(id).c_str(), std::get<1>(id));
- valid_response = true;
- }
- }
- else if (req_status > 0){
- // we don't change status since it was not in pending
- // we simply fail
- mdclog_write(MDCLOG_ERR, "Error:: %s, %d: Request %s, %d for deletion is not in delete_pending state, is in State = %d\n", __FILE__, __LINE__, id, std::get<0>(id).c_str(), std::get<1>(id));
- }
- else{
- mdclog_write(MDCLOG_ERR, "%s, %d: Could not find request id %s, %d in request queue for deletion ", __FILE__, __LINE__, std::get<0>(id).c_str(), std::get<1>(id));
- }
-
- }
- }
-
- else{
- mdclog_write(MDCLOG_ERR, "%s, %d: Subscription Handler Response received E2AP PDU success response with an non-subscription response related type %d", __FILE__, __LINE__, procedureCode);
- }
-