LCOV - code coverage report
Current view: top level - src/ComposePostService - ComposePostService.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 60 63 95.2 %
Date: 2025-11-03 23:12:06 Functions: 4 5 80.0 %

          Line data    Source code
       1             : #include <signal.h>
       2             : #include <thrift/protocol/TBinaryProtocol.h>
       3             : #include <thrift/server/TThreadedServer.h>
       4             : #include <thrift/transport/TBufferTransports.h>
       5             : #include <thrift/transport/TServerSocket.h>
       6             : 
       7             : #include "../utils.h"
       8             : #include "../utils_thrift.h"
       9             : #include "ComposePostHandler.h"
      10             : 
      11             : extern "C" void __gcov_flush();
      12             : 
      13             : using apache::thrift::protocol::TBinaryProtocolFactory;
      14             : using apache::thrift::server::TThreadedServer;
      15             : using apache::thrift::transport::TFramedTransportFactory;
      16             : using apache::thrift::transport::TServerSocket;
      17             : using namespace social_network;
      18             : 
      19           0 : void sigintHandler(int sig) { exit(EXIT_SUCCESS); }
      20             : 
      21           1 : void handle_sigusr1(int signum) {
      22           1 :   __gcov_flush();
      23           0 : }
      24             : 
      25           1 : int main(int argc, char *argv[]) {
      26           1 :   signal(SIGINT, sigintHandler);
      27           1 :   signal(SIGUSR1, handle_sigusr1);
      28           1 :   init_logger();
      29           1 :   SetUpTracer("config/jaeger-config.yml", "compose-post-service");
      30             : 
      31           1 :   json config_json;
      32           1 :   if (load_config_file("config/service-config.json", &config_json) != 0) {
      33           0 :     exit(EXIT_FAILURE);
      34             :   }
      35             : 
      36           1 :   int port = config_json["compose-post-service"]["port"];
      37             : 
      38           1 :   int post_storage_port = config_json["post-storage-service"]["port"];
      39           1 :   std::string post_storage_addr = config_json["post-storage-service"]["addr"];
      40           1 :   int post_storage_conns = config_json["post-storage-service"]["connections"];
      41           1 :   int post_storage_timeout = config_json["post-storage-service"]["timeout_ms"];
      42             :   int post_storage_keepalive =
      43           1 :       config_json["post-storage-service"]["keepalive_ms"];
      44             : 
      45           1 :   int user_timeline_port = config_json["user-timeline-service"]["port"];
      46           1 :   std::string user_timeline_addr = config_json["user-timeline-service"]["addr"];
      47           1 :   int user_timeline_conns = config_json["user-timeline-service"]["connections"];
      48             :   int user_timeline_timeout =
      49           1 :       config_json["user-timeline-service"]["timeout_ms"];
      50             :   int user_timeline_keepalive =
      51           1 :       config_json["user-timeline-service"]["keepalive_ms"];
      52             : 
      53           1 :   int text_port = config_json["text-service"]["port"];
      54           1 :   std::string text_addr = config_json["text-service"]["addr"];
      55           1 :   int text_conns = config_json["text-service"]["connections"];
      56           1 :   int text_timeout = config_json["text-service"]["timeout_ms"];
      57           1 :   int text_keepalive = config_json["text-service"]["keepalive_ms"];
      58             : 
      59           1 :   int user_port = config_json["user-service"]["port"];
      60           1 :   std::string user_addr = config_json["user-service"]["addr"];
      61           1 :   int user_conns = config_json["user-service"]["connections"];
      62           1 :   int user_timeout = config_json["user-service"]["timeout_ms"];
      63           1 :   int user_keepalive = config_json["user-service"]["keepalive_ms"];
      64             : 
      65           1 :   int media_port = config_json["media-service"]["port"];
      66           1 :   std::string media_addr = config_json["media-service"]["addr"];
      67           1 :   int media_conns = config_json["media-service"]["connections"];
      68           1 :   int media_timeout = config_json["media-service"]["timeout_ms"];
      69           1 :   int media_keepalive = config_json["media-service"]["keepalive_ms"];
      70             : 
      71           1 :   int home_timeline_port = config_json["home-timeline-service"]["port"];
      72           1 :   std::string home_timeline_addr = config_json["home-timeline-service"]["addr"];
      73           1 :   int home_timeline_conns = config_json["home-timeline-service"]["connections"];
      74             :   int home_timeline_timeout =
      75           1 :       config_json["home-timeline-service"]["timeout_ms"];
      76             :   int home_timeline_keepalive =
      77           1 :       config_json["home-timeline-service"]["keepalive_ms"];
      78             : 
      79           1 :   int unique_id_port = config_json["unique-id-service"]["port"];
      80           1 :   std::string unique_id_addr = config_json["unique-id-service"]["addr"];
      81           1 :   int unique_id_conns = config_json["unique-id-service"]["connections"];
      82           1 :   int unique_id_timeout = config_json["unique-id-service"]["timeout_ms"];
      83           1 :   int unique_id_keepalive = config_json["unique-id-service"]["keepalive_ms"];
      84             : 
      85             :   ClientPool<ThriftClient<PostStorageServiceClient>> post_storage_client_pool(
      86             :       "post-storage-client", post_storage_addr, post_storage_port, 0,
      87           1 :       post_storage_conns, post_storage_timeout, post_storage_keepalive, config_json);
      88             :   ClientPool<ThriftClient<UserTimelineServiceClient>> user_timeline_client_pool(
      89             :       "user-timeline-client", user_timeline_addr, user_timeline_port, 0,
      90           1 :       user_timeline_conns, user_timeline_timeout, user_timeline_keepalive, config_json);
      91             :   ClientPool<ThriftClient<TextServiceClient>> text_client_pool(
      92             :       "text-service-client", text_addr, text_port, 0, text_conns, text_timeout,
      93           1 :       text_keepalive, config_json);
      94             :   ClientPool<ThriftClient<UserServiceClient>> user_client_pool(
      95             :       "user-service-client", user_addr, user_port, 0, user_conns, user_timeout,
      96           1 :       user_keepalive, config_json);
      97             :   ClientPool<ThriftClient<MediaServiceClient>> media_client_pool(
      98             :       "media-service-client", media_addr, media_port, 0, media_conns,
      99           1 :       media_timeout, media_keepalive, config_json);
     100             :   ClientPool<ThriftClient<HomeTimelineServiceClient>> home_timeline_client_pool(
     101             :       "home-timeline-service-client", home_timeline_addr, home_timeline_port, 0,
     102           1 :       home_timeline_conns, home_timeline_timeout, home_timeline_keepalive, config_json);
     103             :   ClientPool<ThriftClient<UniqueIdServiceClient>> unique_id_client_pool(
     104             :       "unique-id-service-client", unique_id_addr, unique_id_port, 0,
     105           1 :       unique_id_conns, unique_id_timeout, unique_id_keepalive, config_json);
     106             : 
     107           1 :   std::shared_ptr<TServerSocket> server_socket = get_server_socket(config_json, "0.0.0.0", port);
     108             :   TThreadedServer server(
     109           2 :       std::make_shared<ComposePostServiceProcessor>(
     110           2 :           std::make_shared<ComposePostHandler>(
     111             :               &post_storage_client_pool, &user_timeline_client_pool,
     112             :               &user_client_pool, &unique_id_client_pool, &media_client_pool,
     113             :               &text_client_pool, &home_timeline_client_pool)),
     114             :       server_socket,
     115           2 :       std::make_shared<TFramedTransportFactory>(),
     116           6 :       std::make_shared<TBinaryProtocolFactory>());
     117           2 :   LOG(info) << "Starting the compose-post-service server ...";
     118           1 :   server.serve();
     119           3 : }

Generated by: LCOV version 1.12