LCOV - code coverage report
Current view: top level - nnstreamer-2.4.2/ext/nnstreamer/extra - nnstreamer_grpc_common.h (source / functions) Coverage Total Hit
Test: nnstreamer 2.4.2-0 nnstreamer/nnstreamer#eca68b8d050408568af95d831a8eef62aaee7784 Lines: 78.6 % 14 11
Test Date: 2025-03-14 05:36:58 Functions: 66.7 % 6 4

            Line data    Source code
       1              : /* SPDX-License-Identifier: LGPL-2.1-only */
       2              : /**
       3              :  * GStreamer / NNStreamer gRPC support
       4              :  * Copyright (C) 2020 Dongju Chae <dongju.chae@samsung.com>
       5              :  */
       6              : /**
       7              :  * @file    nnstreamer_grpc_common.h
       8              :  * @date    21 Oct 2020
       9              :  * @brief   Common header for NNStreamer gRPC support
      10              :  * @see     https://github.com/nnstreamer/nnstreamer
      11              :  * @author  Dongju Chae <dongju.chae@samsung.com>
      12              :  * @bug     No known bugs except for NYI items
      13              :  */
      14              : 
      15              : #ifndef __NNS_GRPC_COMMON_H__
      16              : #define __NNS_GRPC_COMMON_H__
      17              : 
      18              : #include "nnstreamer_grpc.h"
      19              : 
      20              : #include <gst/base/gstdataqueue.h>
      21              : #include <grpcpp/grpcpp.h>
      22              : 
      23              : #include <cstring>
      24              : #include <string>
      25              : #include <thread>
      26              : 
      27              : namespace grpc {
      28              : 
      29              : /**
      30              :  * @brief NNStreamer RPC service
      31              :  */
      32              : class NNStreamerRPC {
      33              :   public:
      34              :     static NNStreamerRPC * createInstance (const grpc_config *config);
      35              : 
      36              :     NNStreamerRPC (const grpc_config *config);
      37              :     virtual ~NNStreamerRPC ();
      38              : 
      39              :     gboolean start ();
      40              :     void stop ();
      41              :     gboolean send (GstBuffer *buffer);
      42              : 
      43              :     /** @brief get gRPC listening port (server only) */
      44           12 :     int getListeningPort () {
      45           12 :       if (is_server_)
      46           12 :         return port_;
      47              :       else
      48            0 :         return -EINVAL;
      49              :     }
      50              : 
      51              :     /** @brief set library module handle */
      52           28 :     void setModuleHandle (void * handle) {
      53           28 :       if (handle_ == NULL)
      54           28 :         handle_ = handle;
      55           28 :     }
      56              : 
      57              :     /** @brief get library module handle */
      58           12 :     void *getModuleHandle () {
      59           12 :       return handle_;
      60              :     }
      61              : 
      62              :     /** @brief get the grpc direction */
      63           16 :     grpc_direction getDirection () {
      64           16 :       return direction_;
      65              :     }
      66              : 
      67              :   protected:
      68              :     const gchar *host_;
      69              :     gint port_;
      70              : 
      71              :     gboolean is_server_;
      72              :     gboolean is_blocking_;
      73              : 
      74              :     grpc_direction direction_;
      75              : 
      76              :     grpc_cb cb_;
      77              :     void * cb_data_;
      78              : 
      79              :     GstTensorsConfig *config_;
      80              :     GstDataQueue *queue_;
      81              : 
      82              :     std::unique_ptr<Server> server_instance_;
      83              :     std::unique_ptr<ServerCompletionQueue> completion_queue_;
      84              : 
      85              :     std::thread worker_;
      86              : 
      87              :     void * handle_;
      88              :     gboolean stop_;
      89              : 
      90              :   private:
      91              :     /** @brief start gRPC server */
      92            0 :     virtual gboolean start_server (std::string address) { return FALSE; }
      93              :     /** @brief start gRPC client */
      94            0 :     virtual gboolean start_client (std::string address) { return FALSE; }
      95              : 
      96              :     gboolean _start_server ();
      97              :     gboolean _start_client ();
      98              : 
      99              :     static gboolean _data_queue_check_full_cb (GstDataQueue * queue,
     100              :         guint visible, guint bytes, guint64 time, gpointer checkdata);
     101              :     static void _data_queue_item_free (GstDataQueueItem * item);
     102              : };
     103              : 
     104              : }; /* namespace grpc */
     105              : 
     106              : #endif /* __NNS_GRPC_COMMON_H__ */
        

Generated by: LCOV version 2.0-1