Add ringbuffer size to API 61/28361/1
authorGokul Singaraju <goksing@gmail.com>
Wed, 17 Jan 2018 04:51:44 +0000 (23:51 -0500)
committerGokul Singaraju <goksing@gmail.com>
Wed, 17 Jan 2018 04:52:02 +0000 (23:52 -0500)
Issue-ID: CERT-12
Change-Id: Ie698da815605d456f34ed05e4ef1ee11c994db86
Signed-Off-by: Gokul Singaraju <goksing@gmail.com>
vnfs/VES5.0/evel/evel-library/code/evel_library/evel.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel.h
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_event_mgr.c
vnfs/VES5.0/evel/evel-library/code/evel_library/evel_internal.h

index c6ead7a..4e4383e 100644 (file)
@@ -89,6 +89,7 @@ EVEL_ERR_CODES evel_initialize(const char * const fqdn,
                                int port,
                                const char * const path,
                                const char * const topic,
+                               int ring_buf_size,
                                int secure,
                                const char * const cert_file_path,
                                const char * const key_file_path,
@@ -251,6 +252,7 @@ EVEL_ERR_CODES evel_initialize(const char * const fqdn,
   rc = event_handler_initialize(event_api_url,
                                 throt_api_url,
                                 source_ip,
+                                ring_buf_size,
                                 secure,
                                 cert_file_path,
                                 key_file_path,
index 119fa79..896dd9d 100644 (file)
@@ -1400,6 +1400,7 @@ typedef struct copyright {
  * @param   port    The API's port.
  * @param   path    The optional path (may be NULL).
  * @param   topic   The optional topic part of the URL (may be NULL).
+ * @param   ring_buf_size   Ring buffer size (>=100) ~ Avg Messages in 1hr
  * @param   secure  Whether to use HTTPS (0=HTTP, 1=HTTPS).
  * @param   cert_file_path     Path to client certificate file
  * @param   key_file_path      Path to client key file
@@ -1423,6 +1424,7 @@ EVEL_ERR_CODES evel_initialize(const char * const fqdn,
                                int port,
                                const char * const path,
                                const char * const topic,
+                               int ring_buf_size,
                                int secure,
                                const char * const cert_file_path,
                                const char * const key_file_path,
index c9bb434..5babb67 100644 (file)
@@ -621,6 +621,10 @@ int evel_json_encode_event(char * json,
   /* Sanity check.                                                           */
   /***************************************************************************/
   assert(jbuf->depth == 0);
+  if( jbuf->offset >= max_size ){
+          EVEL_ERROR("Event exceeded size limit %d", max_size);
+          assert(0);
+  }
 
   EVEL_EXIT();
 
index 5c6ca4b..d10543b 100644 (file)
@@ -115,6 +115,7 @@ static char * evel_batch_api_url;
  * @param[in] throt_api_url
  *                      The URL where the Throttling API is expected to be.
  * @param[in] source_ip  Source IP of VES Agent
+ * @param[in] ring_buf_size     Initial size of ring buffer
  * @param[in] secure     Whether Using http or https
  * @param[in] cert_file_path  Path to Client Certificate file
  * @param[in] key_file_path   Path to Client key file
@@ -130,6 +131,7 @@ static char * evel_batch_api_url;
 EVEL_ERR_CODES event_handler_initialize(const char * const event_api_url,
                                         const char * const throt_api_url,
                                         const char * const source_ip,
+                                        int ring_buf_size,
                                         int secure,
                                         const char * const cert_file_path,
                                         const char * const key_file_path,
@@ -473,6 +475,12 @@ EVEL_ERR_CODES event_handler_initialize(const char * const event_api_url,
   /* Initialize a message ring-buffer to be used between the foreground and  */
   /* the thread which sends the messages.  This can't fail.                  */
   /***************************************************************************/
+  if( ring_buf_size < EVEL_EVENT_BUFFER_DEPTH )
+  {
+    log_error_state("Warning: Failed to initialize Ring buffer size to %d. "
+                    ring_buf_size);
+    goto exit_label;
+  }
   ring_buffer_initialize(&event_buffer, EVEL_EVENT_BUFFER_DEPTH);
 
   /***************************************************************************/
index dd4b4b7..d1a952b 100644 (file)
@@ -175,6 +175,7 @@ typedef struct evel_throttle_spec {
  * @param[in] throt_api_url
  *                      The URL where the Throttling API is expected to be.
  * @param[in] source_ip  Source IP of VES Agent
+ * @param[in] ring_buf_size     Initialization size of Ring Buffer
  * @param[in] secure     Whether Using http or https
  * @param[in] cert_file_path  Path to Client Certificate file
  * @param[in] key_file_path   Path to Client key file
@@ -190,6 +191,7 @@ typedef struct evel_throttle_spec {
 EVEL_ERR_CODES event_handler_initialize(const char * const event_api_url,
                                         const char * const throt_api_url,
                                         const char * const source_ip,
+                                        int ring_buf_size,
                                         int secure,
                                         const char * const cert_file_path,
                                         const char * const key_file_path,