static void test_server (void) { int status; pid_t pid; TestProcessor *p = NULL; ThriftServerSocket *tss = NULL; ThriftSimpleServer *ss = NULL; p = g_object_new (TEST_PROCESSOR_TYPE, NULL); tss = g_object_new (THRIFT_TYPE_SERVER_SOCKET, "port", TEST_PORT, NULL); ss = g_object_new (THRIFT_TYPE_SIMPLE_SERVER, "processor", p, "server_transport", THRIFT_SERVER_TRANSPORT (tss), NULL); /* run the server in a child process */ pid = fork (); assert (pid >= 0); if (pid == 0) { THRIFT_SERVER_GET_CLASS (THRIFT_SERVER (ss))->serve (THRIFT_SERVER (ss), NULL); exit (0); } else { sleep (5); kill (pid, SIGINT); g_object_unref (ss); g_object_unref (tss); g_object_unref (p); assert (wait (&status) == pid); assert (status == SIGINT); } }
void thrift_server_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { ThriftServer *server = THRIFT_SERVER (object); THRIFT_UNUSED_VAR (pspec); switch (property_id) { case PROP_THRIFT_SERVER_PROCESSOR: server->processor = g_value_get_object (value); break; case PROP_THRIFT_SERVER_SERVER_TRANSPORT: server->server_transport = g_value_get_object (value); break; case PROP_THRIFT_SERVER_INPUT_TRANSPORT_FACTORY: server->input_transport_factory = g_value_get_object (value); break; case PROP_THRIFT_SERVER_OUTPUT_TRANSPORT_FACTORY: server->output_transport_factory = g_value_get_object (value); break; case PROP_THRIFT_SERVER_INPUT_PROTOCOL_FACTORY: server->input_protocol_factory = g_value_get_object (value); break; case PROP_THRIFT_SERVER_OUTPUT_PROTOCOL_FACTORY: server->output_protocol_factory = g_value_get_object (value); break; } }
static void thrift_simple_server_init (ThriftSimpleServer *tss) { tss->running = FALSE; ThriftServer *server = THRIFT_SERVER(tss); if (server->input_transport_factory == NULL) { server->input_transport_factory = g_object_new (THRIFT_TYPE_TRANSPORT_FACTORY, NULL); } if (server->output_transport_factory == NULL) { server->output_transport_factory = g_object_new (THRIFT_TYPE_TRANSPORT_FACTORY, NULL); } if (server->input_protocol_factory == NULL) { server->input_protocol_factory = g_object_new (THRIFT_TYPE_BINARY_PROTOCOL_FACTORY, NULL); } if (server->output_protocol_factory == NULL) { server->output_protocol_factory = g_object_new (THRIFT_TYPE_BINARY_PROTOCOL_FACTORY, NULL); } }