Modified hardcoded eventname id to user defined
[demo.git] / vnfs / VES5.0 / evel / evel-library / code / evel_library / evel_voicequality.c
index b99cfbb..cf2ec87 100644 (file)
@@ -1,37 +1,22 @@
-/**************************************************************************//**
- * @file
- * Implementation of EVEL functions relating to the Voice Quality.
+/*************************************************************************//**
  *
- * License
- * -------
+ * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
  *
- * Copyright(c) <2016>, AT&T Intellectual Property.  All other rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *        http://www.apache.org/licenses/LICENSE-2.0
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
  *
- * 1. Redistributions of source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:  This product includes
- *    software developed by the AT&T.
- * 4. Neither the name of AT&T nor the names of its contributors may be used to
- *    endorse or promote products derived from this software without specific
- *    prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY AT&T INTELLECTUAL PROPERTY ''AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL AT&T INTELLECTUAL PROPERTY BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ ****************************************************************************/
+/**************************************************************************//**
+ * @file
+ * Implementation of EVEL functions relating to the Voice Quality.
  *****************************************************************************/
 
 #include <string.h>
@@ -49,6 +34,8 @@
  *          factory function and are immutable once set.  Optional fields have 
  *          explicit setter functions, but again values may only be set once 
  *          so that the Voice Quality has immutable properties.
+ * @param event_name    Unique Event Name
+ * @param event_id    A universal identifier of the event for analysis etc.
  * @param   calleeSideCodec         Callee codec for the call.
  * @param   callerSideCodec         Caller codec for the call.
  * @param   correlator              Constant across all events on this call.
@@ -60,7 +47,8 @@
             ::evel_free_voice_quality.
  * @retval  NULL  Failed to create the event.
  *****************************************************************************/
-EVENT_VOICE_QUALITY * evel_new_voice_quality(const char * const calleeSideCodec,
+EVENT_VOICE_QUALITY * evel_new_voice_quality(const char* ev_name, const char *ev_id,
+                                       const char * const calleeSideCodec,
     const char * const callerSideCodec, const char * const correlator,
     const char * const midCallRtcp, const char * const vendorName) {
     
@@ -97,7 +85,7 @@ EVENT_VOICE_QUALITY * evel_new_voice_quality(const char * const calleeSideCodec,
         /* Initialize the header & the fault fields.  Optional integer values are   */
         /* initialized as 0.                                                        */
         /***************************************************************************/
-        evel_init_header(&voiceQuality->header,"voiceQuality");
+        evel_init_header_nameid(&voiceQuality->header,ev_name,ev_id);
         voiceQuality->header.event_domain = EVEL_DOMAIN_VOICE_QUALITY;
         voiceQuality->major_version = EVEL_VOICEQ_MAJOR_VERSION;
         voiceQuality->minor_version = EVEL_VOICEQ_MINOR_VERSION;
@@ -108,7 +96,7 @@ EVENT_VOICE_QUALITY * evel_new_voice_quality(const char * const calleeSideCodec,
         voiceQuality->midCallRtcp = strdup(midCallRtcp);
         evel_init_vendor_field(&voiceQuality->vendorVnfNameFields, vendorName);
         dlist_initialize(&voiceQuality->additionalInformation);
-        dlist_initialize(&voiceQuality->endOfCallVqmSummaries);
+        voiceQuality->endOfCallVqmSummaries = NULL;
         evel_init_option_string(&voiceQuality->phoneNumber);
     }
 
@@ -426,6 +414,7 @@ void evel_voice_quality_end_metrics_add(EVENT_VOICE_QUALITY * voiceQuality,
     assert(endpointDescription >= 0);
     assert(mosCqe >= 1 && mosCqe <= 5);
     assert(rFactor >= 0 && rFactor <= 100);
+    assert(voiceQuality->endOfCallVqmSummaries == NULL);
     
     /***************************************************************************/
     /* Allocate a container for the value and push onto the list.              */
@@ -458,7 +447,7 @@ void evel_voice_quality_end_metrics_add(EVENT_VOICE_QUALITY * voiceQuality,
     evel_set_option_int(&vQMetrices->rFactor, rFactor, "rFactor ");
     evel_set_option_int(&vQMetrices->roundTripDelay, roundTripDelay, "Round trip delay in milliseconds ");
 
-    dlist_push_last(&voiceQuality->endOfCallVqmSummaries, vQMetrices);
+    voiceQuality->endOfCallVqmSummaries = vQMetrices;
 
     EVEL_EXIT();
 }
@@ -534,23 +523,25 @@ void evel_json_encode_voice_quality(EVEL_JSON_BUFFER * jbuf,
       addlInfoItem = dlist_get_next(addlInfoItem);
     }
     evel_json_close_list(jbuf);
+    /*************************************************************************/
+    /* If we've not written anything, rewind to before we opened the list.   */
+    /*************************************************************************/
+    if (!item_added)
+    {
+      evel_json_rewind(jbuf);
     }
+  }
 
     //endOfCallVqmSummaries
-    evel_json_checkpoint(jbuf);
-    if (evel_json_open_opt_named_list(jbuf, "endOfCallVqmSummaries"))
-    {
-        vQMetricsItem = dlist_get_first(&event->endOfCallVqmSummaries);
-        while (vQMetricsItem != NULL)
-        {
-            vQMetrics = (END_OF_CALL_VOICE_QUALITY_METRICS *)vQMetricsItem->item;
-            assert(vQMetrics != NULL);
+  if( event->endOfCallVqmSummaries != NULL )
+  {
+     evel_json_open_named_object(jbuf, "endOfCallVqmSummaries");
+     vQMetrics = event->endOfCallVqmSummaries;
+     assert(vQMetrics != NULL);
 
             if (!evel_throttle_suppress_nv_pair(jbuf->throttle_spec,
-                "endOfCallVqmSummaries",
-                vQMetrics->adjacencyName))
+                "endOfCallVqmSummaries", vQMetrics->adjacencyName))
             {
-                evel_json_open_object(jbuf);
                 evel_enc_kv_string(jbuf, "adjacencyName", vQMetrics->adjacencyName);
                 evel_enc_kv_string(jbuf, "endpointDescription", vQMetrics->endpointDescription);
                 evel_enc_kv_opt_int(jbuf, "endpointJitter", &vQMetrics->endpointJitter);
@@ -573,21 +564,10 @@ void evel_json_encode_voice_quality(EVEL_JSON_BUFFER * jbuf,
                 evel_enc_kv_opt_int(jbuf, "rFactor", &vQMetrics->rFactor);
                 evel_enc_kv_opt_int(jbuf, "roundTripDelay", &vQMetrics->roundTripDelay);
 
-                evel_json_close_object(jbuf);
-                item_added = true;
             }
-            vQMetricsItem = dlist_get_next(vQMetricsItem);
-        }
-        evel_json_close_list(jbuf);
-       }
 
-    /*************************************************************************/
-    /* If we've not written anything, rewind to before we opened the list.   */
-    /*************************************************************************/
-    if (!item_added)
-    {
-      evel_json_rewind(jbuf);
-    }
+    evel_json_close_object(jbuf);
+  }
 
   evel_json_close_object(jbuf);
 
@@ -634,15 +614,14 @@ void evel_free_voice_quality(EVENT_VOICE_QUALITY * voiceQuality) {
     }
 
     //Summary Information
-    vQMetrices = dlist_pop_last(&voiceQuality->endOfCallVqmSummaries);
-    while (vQMetrices != NULL)
+    if(voiceQuality->endOfCallVqmSummaries != NULL)
     {
+        vQMetrices = voiceQuality->endOfCallVqmSummaries;
         EVEL_DEBUG("Freeing End of Call Voice Measurements Info (%s, %s)",
             vQMetrices->adjacencyName,
             vQMetrices->endpointDescription);
         free(vQMetrices->adjacencyName);
         free(vQMetrices);
-        vQMetrices = dlist_pop_last(&voiceQuality->endOfCallVqmSummaries);
     }
 
     //Members