コード例 #1
0
ファイル: sv_main.c プロジェクト: chrisglass/ufoai
/**
 * @sa CL_ReadPacket
 * @sa NET_ReadMsg
 * @sa SV_Start
 */
void SV_ReadPacket (struct net_stream *s)
{
	client_t *cl = (client_t *)NET_StreamGetData(s);
	struct dbuffer *msg;

	while ((msg = NET_ReadMsg(s))) {
		const int cmd = NET_ReadByte(msg);

		if (cmd == clc_oob)
			SV_ConnectionlessPacket(s, msg);
		else if (cl)
			SV_ExecuteClientMessage(cl, cmd, msg);
		else
			NET_StreamFree(s);

		free_dbuffer(msg);
	}
}
コード例 #2
0
/**
 * @sa CL_ReadPacket
 * @sa NET_ReadMsg
 * @sa SV_Start
 */
void SV_ReadPacket (struct net_stream *s)
{
	client_t *cl = static_cast<client_t *>(NET_StreamGetData(s));
	dbuffer *msg;

	while ((msg = NET_ReadMsg(s))) {
		const int cmd = NET_ReadByte(msg);

		if (cmd == clc_oob)
			SV_ConnectionlessPacket(s, msg);
		else if (cl)
			SV_ExecuteClientMessage(cl, cmd, msg);
		else {
			NET_StreamFree(s);
			s = NULL;
		}

		delete msg;
	}
}
コード例 #3
0
ファイル: net.cpp プロジェクト: Isaacssv552/ufoai
/**
 * @sa NET_StreamGetFree
 * @sa NET_StreamClose
 */
static struct net_stream* NET_StreamNew (int index)
{
	net_stream* const s = Mem_PoolAllocType(net_stream, com_networkPool);
	s->data = nullptr;
	s->loopback_peer = nullptr;
	s->loopback = false;
	s->closed = false;
	s->finished = false;
	s->ready = false;
	s->socket = INVALID_SOCKET;
	s->inbound = dbufferptr();
	s->outbound = dbufferptr();
	s->index = index;
	s->family = 0;
	s->addrlen = 0;
	s->func = nullptr;
	if (streams[index])
		NET_StreamFree(streams[index]);
	streams[index] = s;
	return s;
}