aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ServerConnection.h
blob: 9ef809730357f15a78186cbf182e1ed22d17785c (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
49
50
#pragma once
class PendingConnection;
class PlayerConnection;
class MinecraftServer;
class Socket;
class ServerSettingsChangedPacket;

using namespace std;

class ServerConnection
{
//    public static Logger logger = Logger.getLogger("Minecraft");

private:
//	ServerSocket serverSocket;
//    private Thread listenThread;
public:
	volatile bool running;
private:
	int connectionCounter;
private:
	CRITICAL_SECTION pending_cs;	// 4J added
	vector< shared_ptr<PendingConnection> > pending;
    vector< shared_ptr<PlayerConnection> > players;

	// 4J - When the server requests a texture, it should add it to here while we are waiting for it
	vector<wstring> m_pendingTextureRequests;
public:
	MinecraftServer *server;

public:
	ServerConnection(MinecraftServer *server); // 4J - removed params InetAddress address, int port);
	~ServerConnection();
	void NewIncomingSocket(Socket *socket);	// 4J - added

	void removeSpamProtection(Socket *socket) { }// 4J Stu - Not implemented as not required
    void addPlayerConnection(shared_ptr<PlayerConnection> uc);
private:
	void handleConnection(shared_ptr<PendingConnection> uc);
public:
	void stop();
    void tick();

	// 4J Added
	bool addPendingTextureRequest(const wstring &textureName);
	void handleTextureReceived(const wstring &textureName);
	void handleTextureAndGeometryReceived(const wstring &textureName);
	void handleServerSettingsChanged(shared_ptr<ServerSettingsChangedPacket> packet);
	vector< shared_ptr<PlayerConnection> >  *getPlayers();
};