Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int
- lvc_read_packet(lvc_client_t *client)
- {
- for(;;) {
- //If not waiting on a packet, decode next packet length
- if (client->read_len < 0) {
- if (mcp_decode_varint(bbuf, &client->read_len) < 0) {
- //Varint decode failed, wait for more data
- client->read_len = -1;
- break;
- }
- }
- if (bbuf->rem < client->read_len) {
- //Not enough data to decode packet, wait for more data
- break;
- }
- //TODO: Encryption + Compression
- switch (client->state) {
- case MCP_HANDSHAKE_STATE:
- lvc_handle_handshake(client);
- break;
- case MCP_STATUS_STATE:
- lvc_handle_status(client);
- break;
- case MCP_LOGIN_STATE:
- lvc_handle_login(client);
- break;
- case MCP_PLAY_STATE:
- lvc_handle_play(client);
- break;
- default:
- printf("Entered state default, something is wrong, state: %d\n",
- client->state);
- break;
- }
- //Packet handled, reset read_len
- client->read_len = -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement