FskErr KprZeroconfServiceInfoNew(KprZeroconfServiceInfo *it, const char* type, const char* name, const char* host, const char* ip, UInt32 port, const UInt32 interfaceIndex, char* txt) { FskErr err = kFskErrNone; KprZeroconfServiceInfo self = NULL; bailIfError(FskMemPtrNewClear(sizeof(KprZeroconfServiceInfoRecord), it)); self = *it; self->type = FskStrDoCopy(type); bailIfNULL(self->type); self->name = FskStrDoCopy(name); bailIfNULL(self->name); if (host) { self->host = FskStrDoCopy(host); bailIfNULL(self->host); } if (ip) { self->ip = FskStrDoCopy(ip); bailIfNULL(self->ip); } self->port = port; self->interfaceIndex = interfaceIndex; if (txt) { self->txt = FskStrDoCopy(txt); bailIfNULL(self->txt); } FskInstrumentedItemNew(self, NULL, &KprZeroconfServiceInfoInstrumentation); bail: if (err) KprZeroconfServiceInfoDispose(self); return err; }
void KprZeroconfBrowserServiceDown(KprZeroconfBrowser self, KprZeroconfServiceInfo service) { if (!self) self = KprZeroconfBrowserFind(NULL, service->type); if (!self) return; FskInstrumentedItemPrintfDebug(self, "%p - KprZeroconfBrowserServiceDown %s %s - %p %p", self, service->type, service->name, KprShellGetThread(gShell), FskThreadGetCurrent()); if (self->serviceDownCallback) (*self->serviceDownCallback)(self, service); KprZeroconfServiceInfoDispose(service); }