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 : }
|