Ejemplo n.º 1
0
FskErr KprSocketNew(KprSocketProto proto, KprSocketFlags flags, KprSocketCallbaks *callbacks, void *refcon, KprSocket *it)
{
	FskErr err = kFskErrNone;
	KprSocket self = NULL;

	bailIfError(FskMemPtrNewClear(sizeof(KprSocketRecord), &self));

	switch (proto) {
		case kKprSocketProtoTCP: {

			break;
		}
		case kKprSocketProtoUDP: {
			bailIfError(FskNetSocketNewUDP(&self->socket, "KprSocketUDP"));
			self->mode = kKprSocketModeUDP;

			KprSocketSetupDataReader(self);
			break;
		}
		default:
			bailIfError(kFskErrParameterError);
			break;
	}

	self->proto = proto;
	self->secure = (Boolean)(flags & kKprSocketFlagsSecure);
	self->callbacks = *callbacks;
	self->refcon = refcon;
	*it = self;

	FskListAppend(&gSockets, self);

bail:
	if (err) {
		KprSocketDispose(self);
	}

	return err;
}
Ejemplo n.º 2
0
FskErr KprCoAPClientNew(KprCoAPClient *it, KprCoAPClientCallbacks *callbacks, void *refcon)
{
	FskErr err = kFskErrNone;
	KprCoAPClient self = NULL;
	FskSocket socket = NULL;
	KprCoAPReceiver	receiver = NULL;
	KprCoAPReceiverCallbacks receiverCallback = {
		KprCoAPClient_receiveCallback,
		KprCoAPClient_errorCallback,
	};

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

	bailIfError(FskNetSocketNewUDP(&socket, "KprCoAPClient"));
	bailIfError(FskNetSocketBind(socket, -1, 0));

	bailIfError(KprCoAPReceiverNew(&receiver, socket, &receiverCallback, self));

	self->socket = socket;
	self->receiver = receiver;
	self->messageId = FskRandom();
	self->autoToken = false;
	self->nextTokenBytes = 1;
	self->callbacks = *callbacks;
	self->refcon = refcon;

	*it = self;
	FskDebugStr("CoAP Client created: %p", self);

bail:
	if (err) {
		FskNetSocketClose(socket);
		KprCoAPReceiverDispose(receiver);
		KprCoAPClientDispose(self);
	}

	return err;
}