rocket/editor/clientsocket.h
Erik Faye-Lund 9724884884 editor: move all client stuff to socket-class
Rename NetworkSocket to ClientSocket, and put the client-specific
functionality in it.
2011-03-28 22:59:37 +02:00

63 lines
1.2 KiB
C++

#include "../sync/base.h"
#include <map>
class ClientSocket {
public:
ClientSocket() : socket(INVALID_SOCKET) {}
explicit ClientSocket(SOCKET socket) : socket(socket), clientPaused(true) {}
bool connected() const
{
return INVALID_SOCKET != socket;
}
void disconnect()
{
closesocket(socket);
socket = INVALID_SOCKET;
}
bool recv(char *buffer, size_t length, int flags)
{
if (!connected())
return false;
int ret = ::recv(socket, buffer, int(length), flags);
if (ret != int(length)) {
disconnect();
return false;
}
return true;
}
bool send(const char *buffer, size_t length, int flags)
{
if (!connected())
return false;
int ret = ::send(socket, buffer, int(length), flags);
if (ret != int(length)) {
disconnect();
return false;
}
return true;
}
bool pollRead()
{
if (!connected())
return false;
return !!socket_poll(socket);
}
void sendSetKeyCommand(uint32_t track, const struct track_key &key);
void sendDeleteKeyCommand(int track, int row);
void sendSetRowCommand(int row);
void sendPauseCommand(bool pause);
void sendSaveCommand();
bool clientPaused;
std::map<size_t, size_t> clientRemap;
private:
SOCKET socket;
};