aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/PendingConnection.h
blob: 45d8163ddb861550463a9d66361a7f721db6cdd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma once
#include "..\Minecraft.World\PacketListener.h"
class MinecraftServer;
class Socket;
class LoginPacket;
class Connection;
class Random;
using namespace std;

class PendingConnection : public PacketListener
{
private:
	static const int FAKE_LAG = 0;
    static const int MAX_TICKS_BEFORE_LOGIN = 20 * 30;

//    public static Logger logger = Logger.getLogger("Minecraft");
    static Random *random;

public:
	Connection *connection;
public:
	bool done;
private:
	MinecraftServer *server;
    int _tick;
    wstring name;
    std::shared_ptr<LoginPacket> acceptedLogin;
    wstring loginKey;

public:
    PendingConnection(MinecraftServer *server, Socket *socket, const wstring& id);
	~PendingConnection();
    void tick();
    void disconnect(DisconnectPacket::eDisconnectReason reason);
    virtual void handlePreLogin(std::shared_ptr<PreLoginPacket> packet);
    virtual void handleLogin(std::shared_ptr<LoginPacket> packet);
    virtual void handleAcceptedLogin(std::shared_ptr<LoginPacket> packet);
    virtual void onDisconnect(DisconnectPacket::eDisconnectReason reason, void *reasonObjects);
	virtual void handleGetInfo(std::shared_ptr<GetInfoPacket> packet);
	virtual void handleKeepAlive(std::shared_ptr<KeepAlivePacket> packet);
    virtual void onUnhandledPacket(std::shared_ptr<Packet> packet);
    void send(std::shared_ptr<Packet> packet);
    wstring getName();
    virtual bool isServerPacketListener();

private:
	void sendPreLoginResponse();
};