Example #1
0
static int manageEnet(ServerData *data)
{
   ENetEvent event;
   PacketGeneric *packet;
   Client *client;
   assert(data);

   /* Wait up to 1000 milliseconds for an event. */
   while (enet_host_service(data->server, &event, 1000) > 0) {
      switch (event.type) {
         case ENET_EVENT_TYPE_CONNECT:
            printf("A new client connected from %x:%u.\n",
                  event.peer->address.host,
                  event.peer->address.port);

            /* broadcast join message to others */
            sendJoin(data, &event);
            client = (Client*)event.peer->data;
            break;

         case ENET_EVENT_TYPE_RECEIVE:
            /* discard bad packets */
            if (event.packet->dataLength < sizeof(PacketGeneric))
               break;

            printf("A packet of length %u was received on channel %u.\n",
                  event.packet->dataLength,
                  event.channelID);

            /* handle packet */
            client = (Client*)event.peer->data;
            packet = (PacketGeneric*)event.packet->data;
            switch (packet->id) {
               case PACKET_ID_ACTOR_STATE:
                  handleState(data, &event);
                  break;
               case PACKET_ID_ACTOR_FULL_STATE:
                  handleFullState(data, &event);
                  break;
            }

            /* Clean up the packet now that we're done using it. */
            enet_packet_destroy(event.packet);
            break;

         case ENET_EVENT_TYPE_DISCONNECT:
            /* broadcast part message to others */
            sendPart(data, &event);

            /* Reset the peer's client information. */
            serverFreeClient(data, event.peer->data);
            event.peer->data = NULL;
      }
   }

   /* send all response packets */
   enet_host_flush(data->server);
   return RETURN_OK;
}
Example #2
0
/////////////////////
// Parse a mode packet
void IRCClient::parseMode(const IRCClient::IRCCommand &cmd)
{
	if (m_authorizedState == AUTH_USER_SENT)  {
		sendJoin();
	}
}