Unverified Commit 8fccdaf6 authored by Chao Ma's avatar Chao Ma Committed by GitHub
Browse files

[RPC] HandleCtrlC Register for handling Ctrl+C event. (#1652)

* update

* update

* update

* update

* fix lint
parent b372b3c7
...@@ -893,6 +893,11 @@ def fast_pull(name, id_tensor, part_id, service_id, ...@@ -893,6 +893,11 @@ def fast_pull(name, id_tensor, part_id, service_id,
F.zerocopy_to_dgl_ndarray(local_data)) F.zerocopy_to_dgl_ndarray(local_data))
return F.zerocopy_from_dgl_ndarray(res_tensor) return F.zerocopy_from_dgl_ndarray(res_tensor)
def register_ctrl_c():
"""HandleCtrlC Register for handling Ctrl+C event.
"""
_CAPI_DGLRPCHandleCtrlC()
############### Some basic services will be defined here ############# ############### Some basic services will be defined here #############
CLIENT_REGISTER = 22451 CLIENT_REGISTER = 22451
......
...@@ -35,6 +35,8 @@ def start_server(server_id, ip_config, num_clients, server_state, \ ...@@ -35,6 +35,8 @@ def start_server(server_id, ip_config, num_clients, server_state, \
assert num_clients >= 0, 'num_client (%d) cannot be a negative number.' % num_client assert num_clients >= 0, 'num_client (%d) cannot be a negative number.' % num_client
assert max_queue_size > 0, 'queue_size (%d) cannot be a negative number.' % queue_size assert max_queue_size > 0, 'queue_size (%d) cannot be a negative number.' % queue_size
assert net_type in ('socket'), 'net_type (%s) can only be \'socket\'' % net_type assert net_type in ('socket'), 'net_type (%s) can only be \'socket\'' % net_type
# HandleCtrlC Register for handling Ctrl+C event
rpc.register_ctrl_c()
# Register some basic services # Register some basic services
rpc.register_service(rpc.CLIENT_REGISTER, rpc.register_service(rpc.CLIENT_REGISTER,
rpc.ClientRegisterRequest, rpc.ClientRegisterRequest,
......
...@@ -5,6 +5,11 @@ ...@@ -5,6 +5,11 @@
*/ */
#include "./rpc.h" #include "./rpc.h"
#include <csignal>
#if defined(__linux__)
#include <unistd.h>
#endif
#include <dgl/runtime/container.h> #include <dgl/runtime/container.h>
#include <dgl/packed_func_ext.h> #include <dgl/packed_func_ext.h>
#include <dgl/array.h> #include <dgl/array.h>
...@@ -289,6 +294,27 @@ DGL_REGISTER_GLOBAL("distributed.rpc._CAPI_DGLRPCMessageGetTensors") ...@@ -289,6 +294,27 @@ DGL_REGISTER_GLOBAL("distributed.rpc._CAPI_DGLRPCMessageGetTensors")
*rv = ret; *rv = ret;
}); });
#if defined(__linux__)
/*!
* \brief CtrlCHandler, exits if Ctrl+C is pressed
* \param s signal
*/
void CtrlCHandler(int s) {
LOG(INFO) << "\nUser pressed Ctrl+C, Exiting";
exit(1);
}
DGL_REGISTER_GLOBAL("distributed.rpc._CAPI_DGLRPCHandleCtrlC")
.set_body([] (DGLArgs args, DGLRetValue* rv) {
// Ctrl+C handler
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = CtrlCHandler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, nullptr);
});
#endif
//////////////////////////// ServerState //////////////////////////// //////////////////////////// ServerState ////////////////////////////
DGL_REGISTER_GLOBAL("distributed.server_state._CAPI_DGLRPCGetServerState") DGL_REGISTER_GLOBAL("distributed.server_state._CAPI_DGLRPCGetServerState")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment