* Abstract: * * Likewise Site Manager * * Inter-process communication (Server) * * Global variables * * Authors: Krishna Ganugapati ([email protected]) * Sriram Nambakam ([email protected]) */ #include "includes.h" static LWMsgDispatchSpec gMessageHandlers[] = { LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_TIME, LWNetSrvIpcGetDCTime), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_NAME, LWNetSrvIpcGetDCName), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DOMAIN_CONTROLLER, LWNetSrvIpcGetDomainController), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_LIST, LWNetSrvIpcGetDCList), LWMSG_DISPATCH_BLOCK(LWNET_Q_RESOLVE_NAME, LWNetSrvIpcResolveName), LWMSG_DISPATCH_END }; LWMsgDispatchSpec* LWNetSrvGetDispatchSpec( void ) { return gMessageHandlers; }
* Abstract: * * Registry * * Server API main * * Authors: Krishna Ganugapati ([email protected]) * Sriram Nambakam ([email protected]) * Wei Fu ([email protected]) */ #include "api.h" static LWMsgDispatchSpec gMessageHandlers[] = { LWMSG_DISPATCH_BLOCK(REG_Q_ENUM_ROOT_KEYSW, RegSrvIpcEnumRootKeysW), LWMSG_DISPATCH_BLOCK(REG_Q_ENUM_VALUEW, RegSrvIpcEnumValueW), LWMSG_DISPATCH_BLOCK(REG_Q_GET_VALUEW, RegSrvIpcGetValueW), LWMSG_DISPATCH_BLOCK(REG_Q_OPEN_KEYW_EX, RegSrvIpcOpenKeyExW), LWMSG_DISPATCH_BLOCK(REG_Q_SET_VALUEW_EX, RegSrvIpcSetValueExW), LWMSG_DISPATCH_BLOCK(REG_Q_CREATE_KEY_EX, RegSrvIpcCreateKeyEx), LWMSG_DISPATCH_BLOCK(REG_Q_CLOSE_KEY, RegSrvIpcCloseKey), LWMSG_DISPATCH_BLOCK(REG_Q_DELETE_KEY, RegSrvIpcDeleteKey), LWMSG_DISPATCH_BLOCK(REG_Q_DELETE_KEY_VALUE, RegSrvIpcDeleteKeyValue), LWMSG_DISPATCH_BLOCK(REG_Q_DELETE_TREE, RegSrvIpcDeleteTree), LWMSG_DISPATCH_BLOCK(REG_Q_DELETE_VALUE, RegSrvIpcDeleteValue), LWMSG_DISPATCH_BLOCK(REG_Q_ENUM_KEYW_EX, RegSrvIpcEnumKeyExW), LWMSG_DISPATCH_BLOCK(REG_Q_QUERY_INFO_KEYW, RegSrvIpcQueryInfoKeyW), LWMSG_DISPATCH_BLOCK(REG_Q_QUERY_MULTIPLE_VALUES, RegSrvIpcQueryMultipleValues), LWMSG_DISPATCH_BLOCK(REG_Q_SET_KEY_SECURITY, RegSrvIpcSetKeySecurity), LWMSG_DISPATCH_BLOCK(REG_Q_GET_KEY_SECURITY, RegSrvIpcGetKeySecurity),
sreply->err = errno; out->tag = FSERV_ERROR_RES; out->data = sreply; } else { out->tag = FSERV_VOID_RES; out->data = NULL; } error: return status; } /* Dispatch spec */ static LWMsgDispatchSpec fserv_dispatch[] = { LWMSG_DISPATCH_BLOCK(FSERV_OPEN_REQ, fserv_open_srv), LWMSG_DISPATCH_BLOCK(FSERV_WRITE_REQ, fserv_write_srv), LWMSG_DISPATCH_BLOCK(FSERV_READ_REQ, fserv_read_srv), LWMSG_DISPATCH_BLOCK(FSERV_CLOSE_REQ, fserv_close_srv), LWMSG_DISPATCH_END }; LWMsgDispatchSpec* fserver_get_dispatch(void) { return fserv_dispatch; }
* Abstract: * * Likewise Site Manager * * Inter-process communication (Server) * * Global variables * * Authors: Krishna Ganugapati ([email protected]) * Sriram Nambakam ([email protected]) */ #include "includes.h" static LWMsgDispatchSpec gMessageHandlers[] = { LWMSG_DISPATCH_BLOCK(LWNET_Q_SET_LOG_LEVEL, LWNetSrvIpcSetLogLevel), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_LOG_INFO, LWNetSrvIpcGetLogInfo), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_TIME, LWNetSrvIpcGetDCTime), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_NAME, LWNetSrvIpcGetDCName), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DOMAIN_CONTROLLER, LWNetSrvIpcGetDomainController), LWMSG_DISPATCH_BLOCK(LWNET_Q_GET_DC_LIST, LWNetSrvIpcGetDCList), LWMSG_DISPATCH_BLOCK(LWNET_Q_RESOLVE_NAME, LWNetSrvIpcResolveName), LWMSG_DISPATCH_END }; LWMsgDispatchSpec* LWNetSrvGetDispatchSpec( void ) { return gMessageHandlers;
pthread_mutex_lock(&handle->lock); reply->counter = handle->counter; pthread_mutex_unlock(&handle->lock); pthread_mutex_destroy(&handle->lock); lwmsg_session_unregister_handle(session, handle); reply_msg->tag = COUNTER_CLOSE_SUCCESS; reply_msg->data = reply; return status; } LWMsgDispatchSpec counter_dispatch[] = { LWMSG_DISPATCH_BLOCK(COUNTER_OPEN, counter_srv_open), LWMSG_DISPATCH_BLOCK(COUNTER_ADD, counter_srv_add), LWMSG_DISPATCH_BLOCK(COUNTER_READ, counter_srv_read), LWMSG_DISPATCH_BLOCK(COUNTER_CLOSE, counter_srv_close), LWMSG_DISPATCH_END }; typedef struct { LWMsgPeer* client; CounterHandle* handle; int iters; pthread_mutex_t lock; pthread_cond_t event; int volatile go; } Data;