Advertisement
NickG

lvc_read_packet

Dec 12th, 2015
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. int
  2. lvc_read_packet(lvc_client_t *client)
  3. {
  4.   for(;;) {
  5.     //If not waiting on a packet, decode next packet length
  6.     if (client->read_len < 0) {
  7.       if (mcp_decode_varint(bbuf, &client->read_len) < 0) {
  8.         //Varint decode failed, wait for more data
  9.         client->read_len = -1;
  10.         break;
  11.       }
  12.     }
  13.     if (bbuf->rem < client->read_len) {
  14.       //Not enough data to decode packet, wait for more data
  15.       break;
  16.     }
  17.     //TODO: Encryption + Compression
  18.     switch (client->state) {
  19.       case MCP_HANDSHAKE_STATE:
  20.         lvc_handle_handshake(client);
  21.         break;
  22.       case MCP_STATUS_STATE:
  23.         lvc_handle_status(client);
  24.         break;
  25.       case MCP_LOGIN_STATE:
  26.         lvc_handle_login(client);
  27.         break;
  28.       case MCP_PLAY_STATE:
  29.         lvc_handle_play(client);
  30.         break;
  31.       default:
  32.         printf("Entered state default, something is wrong, state: %d\n",
  33.           client->state);
  34.         break;
  35.     }
  36.     //Packet handled, reset read_len
  37.     client->read_len = -1;
  38.   }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement