Ejemplo n.º 1
0
FskErr KprCoAPClientResolverNew(KprCoAPClientResolver *it, KprCoAPClient client, const char *host, UInt16 port, KprCoAPMessage message)
{
	FskErr err = kFskErrNone;
	KprCoAPClientResolver self = NULL;

	bailIfError(KprMemPtrNewClear(sizeof(KprCoAPClientResolverRecord), &self));

	self->host = FskStrDoCopy(host);
	bailIfNULL(self->host);

	bailIfError(KprCoAPMessageQueueAppend(&self->waiting, message));

	self->client = client;
	self->port = port;

	bailIfError(FskNetHostnameResolveQTAsync((char *) host, 0, KprCoAPClientResolverResolved, self, &self->resolver));

	bailIfError(self->err);

	self->constructed = true;
	*it = self;

bail:
	if (err) {
		KprCoAPClientResolverDispose(self);
	}
	return err;
}
Ejemplo n.º 2
0
FskErr KprCoAPClientDispose(KprCoAPClient self)
{
	FskErr err = kFskErrNone;
	if (self) {
		KprCoAPClientResolver resolver;
		KprCoAPClientRequest request;
		KprCoAPEndpoint endpoint;

		resolver = self->resolvers;
		while (resolver) {
			KprCoAPClientResolver next = resolver->next;
			KprCoAPClientResolverDispose(resolver);
			resolver = next;
		}

		request = self->requests;
		while (request) {
			KprCoAPClientRequest next = request->next;
			KprCoAPClientRequestDispose(request);
			request = next;
		}

		endpoint = self->endpoints;
		while (endpoint) {
			KprCoAPEndpoint next = endpoint->next;
			KprCoAPEndpointDispose(endpoint);
			endpoint = next;
		}

		KprMemoryBlockDispose(self->recycleTokens);

		KprCoAPReceiverDispose(self->receiver);
		FskNetSocketClose(self->socket);
		KprMemPtrDispose(self);
		FskDebugStr("CoAP Client disposed: %p", self);
	}
	return err;
}