Esempio n. 1
0
static void KprCoAPClientResolverResolved(FskResolver rr)
{
	FskErr err = kFskErrNone;

	KprCoAPClientResolver self = (KprCoAPClientResolver)rr->ref;
	KprCoAPMessageQueue entry;

	self->resolver = NULL;

	bailIfError(rr->err);

	self->ipaddr = rr->resolvedIP;
	FskTimeGetNow(&self->resolvedAt);

	entry = self->waiting;
	while (entry) {
		KprCoAPMessageQueue next = entry->next;
		KprCoAPMessage message = entry->message;

		bailIfError(KprCoAPClientStartRequest(self->client, self->ipaddr, self->port, message));

		entry = next;
	}


bail:
	if (err) {
		if (self->constructed) {
			KprCoAPClientReportError(self->client, err, "dns resolve error");
		} else {
			self->err = err;
		}
	}
}
Esempio n. 2
0
static void KprCoAPClient_retryCallback(KprCoAPEndpoint endpoint, KprCoAPMessage request, UInt32 retryCount, void *refcon)
{
		FskErr err = kFskErrNone;
	KprCoAPClient self = (KprCoAPClient) refcon;
	err = self->callbacks.retryCallback(request, retryCount, self->refcon);

	if (err != kFskErrNone) {
		KprCoAPClientReportError(self, err, "retry callback error");
	}
}
Esempio n. 3
0
static void KprCoAPClient_receiveCallback(KprCoAPMessage message, UInt32 remoteAddr, UInt16 remotePort, void *refcon)
{
	KprCoAPClient self = (KprCoAPClient) refcon;
	FskErr err;


	err = KprCoAPClientDispatchResponse(self, remoteAddr, remotePort, message);

	if (err) {
		KprCoAPClientReportError(self, err, "response handling");
	}
}
Esempio n. 4
0
static void KprCoAPClient_deliveryErrorCallback(KprCoAPEndpoint endpoint, KprCoAPMessage message, KprCoAPEndpointDeliveryFailure failure, void *refcon)
{
	FskErr err = kFskErrNone;
	KprCoAPClient self = (KprCoAPClient) refcon;
	char *reason;
	KprCoAPClientRequest request;

	switch (failure) {
		case kKprCoAPEndpointDeliveryFailureMaxRetry:
			reason = "max retry";
			break;

		case kKprCoAPEndpointDeliveryFailureReset:
			reason = "reset by peer";
			break;

		default:
			reason = "unknown";
			break;

	}

	err = self->callbacks.deliveryFailureCallback(message, reason, self->refcon);

	if (err != kFskErrNone) {
		KprCoAPClientReportError(self, err, "retry delivery error");
	}

	request = self->requests;

	while (request) {
		if (request->message == message) {
			KprCoAPClientEndRequest(self, request, reason);
			break;
		}

		request = request->next;
	}
}
Esempio n. 5
0
static void KprCoAPClient_errorCallback(FskErr err, const char *reason, void *refcon)
{
	KprCoAPClient self = (KprCoAPClient) refcon;
	KprCoAPClientReportError(self, err, reason);
}