static void recv_channelAccept(struct mwService *srvc, struct mwChannel *chan, struct mwMsgChannelAccept *msg) { // `msg` unused (void)msg; struct mwServiceStorage *srvc_stor; GList *l; g_return_if_fail(srvc != NULL); srvc_stor = (struct mwServiceStorage *) srvc; g_return_if_fail(chan != NULL); g_return_if_fail(chan == srvc_stor->channel); /* send all pending requests */ for(l = srvc_stor->pending; l; l = l->next) { struct mwStorageReq *req = l->data; if(req->action == action_save || req->action == action_load) { request_send(chan, req); } } mwService_started(srvc); }
static void recv_accept(struct mwServiceDirectory *srvc, struct mwChannel *chan, struct mwMsgChannelAccept *msg) { g_return_if_fail(srvc->channel != NULL); g_return_if_fail(srvc->channel == chan); if(MW_SERVICE_IS_STARTING(srvc)) { mwService_started(MW_SERVICE(srvc)); } else { mwChannel_destroy(chan, ERR_FAILURE, NULL); } }
void mwService_start(struct mwService *srvc) { g_return_if_fail(srvc != NULL); if(! MW_SERVICE_IS_STOPPED(srvc)) return; srvc->state = mwServiceState_STARTING; g_message("starting service %s", NSTR(mwService_getName(srvc))); if(srvc->start) { srvc->start(srvc); } else { mwService_started(srvc); } }
static void recv_accept(struct mwServiceAware *srvc, struct mwChannel *chan, struct mwMsgChannelAccept *msg) { g_return_if_fail(srvc->channel != NULL); g_return_if_fail(srvc->channel == chan); if(MW_SERVICE_IS_STARTING(MW_SERVICE(srvc))) { GList *list = NULL; list = map_collect_values(srvc->entries); send_add(chan, list); g_list_free(list); send_attrib_list(srvc); mwService_started(MW_SERVICE(srvc)); } else { mwChannel_destroy(chan, ERR_FAILURE, NULL); } }
static void start(struct mwService *srvc) { mwService_started(srvc); }