void OnEnumeration(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * replyDomain, void * context) { if ( ! context) return; HandleScope scope; ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(6); Local<Value> args[argc]; args[0] = Local<Object>::New(serviceRef->handle_); args[1] = Integer::New(flags); args[2] = Integer::New(interfaceIndex); args[3] = Integer::New(errorCode); args[4] = String::New(replyDomain); if (serviceRef->GetContext().IsEmpty()) { args[5] = Local<Value>::New(Null()); } else { args[5] = Local<Value>::New(serviceRef->GetContext()); } callback->Call(this_, argc, args); }
static void DNSSD_API OnServiceRegistered(DNSServiceRef sdRef, DNSServiceFlags flags, DNSServiceErrorType errorCode, const char * name, const char * serviceType, const char * domain, void * context) { if ( ! context) return; HandleScope scope; ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); if ( ! callback.IsEmpty() && ! this_.IsEmpty()) { const size_t argc(7); Local<Value> args[argc]; args[0] = Local<Object>::New(serviceRef->handle_); args[1] = Integer::New(flags); args[2] = Integer::New(errorCode); args[3] = stringOrUndefined(name); args[4] = stringOrUndefined(serviceType); args[5] = stringOrUndefined(domain); if (serviceRef->GetContext().IsEmpty()) { args[6] = Local<Value>::New(Undefined()); } else { args[6] = Local<Value>::New(serviceRef->GetContext()); } callback->Call(this_, argc, args); } }
void DNSSD_API OnResolve(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * fullname, const char * hosttarget, uint16_t port, uint16_t txtLen, const unsigned char * txtRecord, void * context) { HandleScope scope; ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(9); Local<Value> args[argc]; args[0] = Local<Object>::New(serviceRef->handle_); args[1] = Integer::New(flags); args[2] = Integer::New(interfaceIndex); args[3] = Integer::New(errorCode); args[4] = String::New(fullname); args[5] = String::New(hosttarget); args[6] = Integer::New( ntohs(port) ); Buffer * buffer = Buffer::New(txtLen); memcpy(Buffer::Data(buffer->handle_), txtRecord, txtLen); args[7] = Local<Value>::New(buffer->handle_); if (serviceRef->GetContext().IsEmpty()) { args[8] = Local<Value>::New(Undefined()); } else { args[8] = Local<Value>::New(serviceRef->GetContext()); } callback->Call(this_, argc, args); }
static void DNSSD_API OnServiceChanged(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * serviceName, const char * serviceType, const char * replyDomain, void * context) { NanScope(); ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(8); Local<Value> args[argc]; args[0] = NanObjectWrapHandle(serviceRef); args[1] = NanNew<Integer>(flags); args[2] = NanNew<Uint32>(interfaceIndex); args[3] = NanNew<Integer>(errorCode); args[4] = stringOrUndefined(serviceName); args[5] = stringOrUndefined(serviceType); args[6] = stringOrUndefined(replyDomain); if (serviceRef->GetContext().IsEmpty()) { args[7] = NanUndefined(); } else { args[7] = NanNew<Value>(serviceRef->GetContext()); } NanMakeCallback(this_, callback, argc, args); }
void DNSSD_API OnResolve(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * fullname, const char * hosttarget, uint16_t port, uint16_t txtLen, const unsigned char * txtRecord, void * context) { NanScope(); ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(9); Local<Value> args[argc]; args[0] = NanObjectWrapHandle(serviceRef); args[1] = NanNew<Integer>(flags); args[2] = NanNew<Uint32>(interfaceIndex); args[3] = NanNew<Integer>(errorCode); args[4] = stringOrUndefined(fullname); args[5] = stringOrUndefined(hosttarget); args[6] = NanNew<Integer>( ntohs(port) ); Local<Object> buffer = NanNewBufferHandle(txtLen); memcpy(Buffer::Data(buffer), txtRecord, txtLen); args[7] = buffer; if (serviceRef->GetContext().IsEmpty()) { args[8] = NanUndefined(); } else { args[8] = NanNew<Value>(serviceRef->GetContext()); } NanMakeCallback(this_, callback, argc, args); }
static void DNSSD_API OnServiceRegistered(DNSServiceRef sdRef, DNSServiceFlags flags, DNSServiceErrorType errorCode, const char * name, const char * serviceType, const char * domain, void * context) { if ( ! context) return; NanScope(); ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); if ( ! callback.IsEmpty() && ! this_.IsEmpty()) { const size_t argc(7); Local<Value> args[argc]; args[0] = NanObjectWrapHandle(serviceRef); args[1] = NanNew<Integer>(flags); args[2] = NanNew<Integer>(errorCode); args[3] = stringOrUndefined(name); args[4] = stringOrUndefined(serviceType); args[5] = stringOrUndefined(domain); if (serviceRef->GetContext().IsEmpty()) { args[6] = NanUndefined(); } else { args[6] = NanNew<Value>(serviceRef->GetContext()); } NanMakeCallback(this_, callback, argc, args); } }
void OnAddressInfo(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * hostname, const struct sockaddr * address, uint32_t ttl, void * context) { if ( ! context) return; HandleScope scope; ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(8); Local<Value> args[argc]; args[0] = Local<Object>::New(serviceRef->handle_); args[1] = Integer::New(flags); args[2] = Integer::New(interfaceIndex); args[3] = Integer::New(errorCode); args[4] = String::New(hostname); args[5] = String::Empty(); char ip[INET6_ADDRSTRLEN]; struct sockaddr_in *a4; struct sockaddr_in6 *a6; switch (address->sa_family) { case AF_INET6: a6 = (struct sockaddr_in6*)(address); inet_ntop(AF_INET6, &(a6->sin6_addr), ip, INET6_ADDRSTRLEN); args[5] = String::New(ip); break; case AF_INET: a4 = (struct sockaddr_in*)(address); inet_ntop(AF_INET, &(a4->sin_addr), ip, INET6_ADDRSTRLEN); args[5] = String::New(ip); break; default: break; } args[6] = Integer::New(ttl); if (serviceRef->GetContext().IsEmpty()) { args[7] = Local<Value>::New(Null()); } else { args[7] = Local<Value>::New(serviceRef->GetContext()); } callback->Call(this_, argc, args); }
void DNSSD_API OnEnumeration(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char * replyDomain, void * context) { Nan::HandleScope scope; ServiceRef * serviceRef = static_cast<ServiceRef*>(context); Handle<Function> callback = serviceRef->GetCallback(); Handle<Object> this_ = serviceRef->GetThis(); const size_t argc(6); Local<Value> args[argc]; args[0] = NanObjectWrapHandle(serviceRef); args[1] = NanNew<Integer>(flags); args[2] = NanNew<Uint32>(interfaceIndex); args[3] = NanNew<Integer>(errorCode); args[4] = stringOrUndefined(replyDomain); args[5] = NanNew<Value>(serviceRef->GetContext()); NanMakeCallback(this_, callback, argc, args); }