static void *Worker(void *arg) { struct WorkerData *worker_data = (struct WorkerData *) arg; NaClSrpcServerLoop(worker_data->sock_fd, worker_data->methods, NULL); close(worker_data->sock_fd); free(worker_data); return NULL; }
void *RpcHandler(void *thread_state) { int desc = (int) thread_state; if (!NaClSrpcServerLoop(desc, table, NULL)) { fprintf(stderr, "NaClSrpcServerLoop failed\n"); abort(); } (void) close(desc); return (void *) NULL; }
int NaClSimpleServiceConnectionServerLoop( struct NaClSimpleServiceConnection *self) { int retval; NaClLog(4, "NaClSimpleServiceConnectionServerLoop: handling RPC requests from" " client at socket %"NACL_PRIxPTR"\n", (uintptr_t) self->connected_socket); retval = NaClSrpcServerLoop(self->connected_socket, self->server->handlers, self->instance_data); NaClLog(4, "NaClSimpleServiceConnectionServerLoop: NaClSrpcServerLoop exited," " value %d\n", retval); return retval; }
int NaClSrpcAcceptClientConnection(const struct NaClSrpcHandlerDesc *methods) { int sock_fd = -1; int result = 1; if (NaClSrpcIsStandalone()) { return NaClSrpcCommandLoopMain(methods); } sock_fd = imc_accept(BOUND_SOCKET); if (sock_fd == -1) { return 0; } if (!NaClSrpcServerLoop(sock_fd, methods, NULL)) { result = 0; } if (close(sock_fd) != 0) { result = 0; } return result; }
void WINAPI serviceThread(void* arg) { struct ServiceThreadArgs* typedArg; NaClSrpcImcDescType desc; NaClSrpcHandlerDesc handlers[] = { { "getNum::i", handleGetNum }, { NULL, NULL } }; typedArg = (struct ServiceThreadArgs*) arg; desc = typedArg->desc; free(typedArg); if (!NaClSrpcServerLoop(desc, handlers, 0)) { failWithErrno("NaClSrpcServerLoop"); exit(EXIT_FAILURE); } #ifdef __native_client__ close(desc); #else NaClDescUnref(desc); #endif NaClThreadExit(0); }
int NaClSrpcAcceptClientConnection(const struct NaClSrpcHandlerDesc *methods) { int sock_fd = -1; int result = 1; NaClSrpcLog(1, "NaClSrpcAcceptClientConnection(methods=%p)\n", (void*) methods); sock_fd = imc_accept(BOUND_SOCKET); if (sock_fd == -1) { NaClSrpcLog(NACL_SRPC_LOG_ERROR, "NaClSrpcAcceptClientConnection: imc_accept failed.\n"); return 0; } if (!NaClSrpcServerLoop(sock_fd, methods, NULL)) { NaClSrpcLog(1, "NaClSrpcAcceptClientConnection: NaClSrpcServerLoop exited.\n"); result = 0; } if (close(sock_fd) != 0) { NaClSrpcLog(NACL_SRPC_LOG_ERROR, "NaClSrpcAcceptClientConnection: close failed.\n"); result = 0; } return result; }