コード例 #1
0
ファイル: kprCoAPClient.c プロジェクト: Kazu-zamasu/kinomajs
FskErr KprCoAPClientCreateRequestMessage(KprCoAPClient self, const char *uri, KprCoAPRequestMethod method, Boolean confirmable, KprCoAPMessage *requestOut)
{
	FskErr err = kFskErrNone;
	KprCoAPMessage request = NULL;

	bailIfError(KprCoAPMessageNew(&request));
	bailIfError(KprCoAPMessageParseUri(request, uri));

	request->code = KprCoAPMessageCodeWith(0, method);
	request->messageId = KprCoAPClientGenerateMessageId(self);
	if (confirmable) {
		request->type = kKprCoAPMessageTypeConfirmable;
	} else {
		request->type = kKprCoAPMessageTypeNonConfirmable;
	}

	*requestOut = request;

bail:
	if (err) {
		KprCoAPMessageDispose(request);
	}

	return err;
}
コード例 #2
0
FskErr KprCoAPServerSessionSendAck(KprCoAPServerSession self)
{
	FskErr err = kFskErrNone;
	KprCoAPMessage response;
	KprCoAPServer server = self->server;

	if (!server || self->responded || self->emptyAckSent || !self->confiramableRequest) {
		return kFskErrBadState;
	}

	bailIfError(KprCoAPMessageNew(&response));
	response->type = kKprCoAPMessageTypeAcknowledgement;
	response->messageId = self->request->messageId;

	bailIfError(KprCoAPEndpointSendMessage(self->endpoint, response));

	self->emptyAckSent = true;

bail:
	KprCoAPMessageDispose(response);
	return err;
}
コード例 #3
0
ファイル: kprCoAPClient.c プロジェクト: Kazu-zamasu/kinomajs
FskErr KprCoAPClientHandleResponse(KprCoAPClient self, KprCoAPMessage request, KprCoAPMessage response, KprCoAPEndpoint endpoint)
{
	KprCoAPMessage ack = NULL;
	FskErr err = kFskErrNone;

	if (request && response->type == kKprCoAPMessageTypeAcknowledgement) {
		bailIfError(self->callbacks.acknowledgementCallback(request, self->refcon));
	}

	if (response->code != kKprCoAPMessageCodeEmpty) {
		bailIfError(self->callbacks.responseCallback(request, response, self->refcon));
		if (response->type == kKprCoAPMessageTypeConfirmable) {
			bailIfError(KprCoAPMessageNew(&ack));

			ack->type = kKprCoAPMessageTypeAcknowledgement;
			ack->messageId = response->messageId;

			err = KprCoAPEndpointSendMessage(endpoint, ack);
		}
	}

bail:
	return err;
}