WSRegisterCallbackFunction (C 函数)

WSRegisterCallbackFunction

是一个 WSTP 类型,描述一个函数的函数指针,该函数以一个 WSENV 对象、一个 WSServiceRef 对象、一个 int 对象、一个 const char * 对象和一个 void * 对象为参数,并返回 void.

更多信息

  • 函数 WSRegisterLinkService()WSRegisterLinkServiceWithHostname()、和 WSRegisterLinkServiceWithPortAndHostname() 可在网络上开始一段注册操作,以推广具名服务(named services). 这些函数仅仅开始注册操作并立刻返回. WSTP 库会异步通过 WSRegisterCallbackFunction 的函数回调该应用,以在网络服务注册事件中更新改程序.
  • 一个 WSRegisterCallbackFunction 有如下形式:
  • void function( WSENV e, WSServiceRef r, int flag, const char *name, void *context);
  • int 参数包括一个 flag 值,代表网络上已发生事件的类型.
  • flag 参数可有如下值:
  • WSSDADDSERVICEconst char * 参数包括一个现在在网络上可用的新服务名称的指针
    WSSDREMOVESERVICEthe const char * 现在的参数包括一个在网络上不再可用的服务名称的指针;这个函数仅接受使用该回调函数的 WSRegisterLinkService() 函数注册的移除标记.

范例

基本范例  (1)

#include "wstp.h"

void RegisterCallbackFunction(WSENV e, WSServiceRef r, int flags, const char *serviceName, void *context);

WSServiceRef startRegisterOperation(WSENV e, const char *serviceName)
{
    WSServiceRef theRef;
    WSLINK theLink = (WSLINK)0;
    int error;

    theLink = WSRegisterLinkService(e,
        serviceName,
        RegisterCallbackFunction, NULL /* Use the default
        network domain */, NULL, /* No context object for this
        example */, &theRef, &error);

    if(theLink == (WSLINK)0 || error != 0)
    { /* handle the error */ }

    return theRef;    
}


void RegisterCallbackFunction(WSENV e, WSServiceRef r, int flags, const char *serviceName, void *context)
{
    if(flags & WSSDADDSERVICE)
    { /* Handle successful service registration */ }
    else if(flags & WSSDREMOVESERVICE)
    { /* Handle service registration failure */ }
    else if(flags & WSSDREGISTERERROR)
    { /* Handle error in register operation */ }
}