From 1d59342e7bb7168b5794fe907eb019f6c696aca9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=A3=8E?= Date: Fri, 12 Oct 2012 14:07:33 +0800 Subject: [PATCH] add service localcast --- service-src/service_localcast.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 service-src/service_localcast.c diff --git a/service-src/service_localcast.c b/service-src/service_localcast.c new file mode 100644 index 00000000..2187e0f7 --- /dev/null +++ b/service-src/service_localcast.c @@ -0,0 +1,29 @@ +#include "skynet.h" +#include "skynet_handle.h" +#include "skynet_multicast.h" +#include "localcast.h" + +#include +#include +#include + +static int +_maincb(struct skynet_context * context, void * ud, int type, int session, uint32_t source, const void * msg, size_t sz) { + const struct localcast *lc = msg; + size_t s = lc->sz | type << HANDLE_REMOTE_SHIFT; + struct skynet_multicast_message * mc = skynet_multicast_create(lc->msg, s, source); + skynet_multicast_cast(context, mc, lc->group, lc->n); + free((void *)lc->group); + return 0; +} + +int +localcast_init(void * ud, struct skynet_context *ctx, const char * args) { + skynet_callback(ctx, ud, _maincb); + skynet_command(ctx, "REG", ".cast"); + + return 0; +} + + +