diff options
| author | Petr Mrázek | 2012-03-15 22:05:33 +0100 |
|---|---|---|
| committer | Petr Mrázek | 2012-03-15 22:05:33 +0100 |
| commit | c72fb76316f436eb5987687f7c5b3f68f24cc817 (patch) | |
| tree | 3c1824459a6385c49bb55d5f665a658588081d91 /library/RemoteClient.cpp | |
| parent | 52aca6e05a8a1610b6c8c31ffbbc3d25b6f57db6 (diff) | |
| download | dfhack-c72fb76316f436eb5987687f7c5b3f68f24cc817.tar.gz dfhack-c72fb76316f436eb5987687f7c5b3f68f24cc817.tar.bz2 dfhack-c72fb76316f436eb5987687f7c5b3f68f24cc817.tar.xz | |
MSVC fixage for the new socket API
Diffstat (limited to 'library/RemoteClient.cpp')
| -rw-r--r-- | library/RemoteClient.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/library/RemoteClient.cpp b/library/RemoteClient.cpp index f8d3e3e7..bec935ef 100644 --- a/library/RemoteClient.cpp +++ b/library/RemoteClient.cpp @@ -43,8 +43,10 @@ POSSIBILITY OF SUCH DAMAGE. #include <fstream> #include <istream> #include <string> +#include <stdint.h> #include "RemoteClient.h" +#include <ActiveSocket.h> #include "MiscUtils.h" #include <cstdio> @@ -88,24 +90,26 @@ void color_ostream_proxy::decode(CoreTextNotification *data) RemoteClient::RemoteClient() { active = false; + socket = new CActiveSocket(); } RemoteClient::~RemoteClient() { disconnect(); + delete socket; } -bool DFHack::readFullBuffer(CSimpleSocket &socket, void *buf, int size) +bool DFHack::readFullBuffer(CSimpleSocket *socket, void *buf, int size) { - if (!socket.IsSocketValid()) + if (!socket->IsSocketValid()) return false; char *ptr = (char*)buf; while (size > 0) { - int cnt = socket.Receive(size); + int cnt = socket->Receive(size); if (cnt <= 0) return false; - memcpy(ptr, socket.GetData(), cnt); + memcpy(ptr, socket->GetData(), cnt); ptr += cnt; size -= cnt; } @@ -132,13 +136,13 @@ bool RemoteClient::connect(int port) if (port <= 0) port = GetDefaultPort(); - if (!socket.Initialize()) + if (!socket->Initialize()) { std::cerr << "Socket init failed." << endl; return false; } - if (!socket.Open((const uint8 *)"localhost", port)) + if (!socket->Open((const uint8 *)"localhost", port)) { std::cerr << "Could not connect to localhost:" << port << endl; return false; @@ -150,17 +154,17 @@ bool RemoteClient::connect(int port) memcpy(header.magic, RPCHandshakeHeader::REQUEST_MAGIC, sizeof(header.magic)); header.version = 1; - if (socket.Send((uint8*)&header, sizeof(header)) != sizeof(header)) + if (socket->Send((uint8*)&header, sizeof(header)) != sizeof(header)) { std::cerr << "Could not send header." << endl; - socket.Close(); + socket->Close(); return active = false; } if (!readFullBuffer(socket, &header, sizeof(header))) { std::cerr << "Could not read header." << endl; - socket.Close(); + socket->Close(); return active = false; } @@ -168,7 +172,7 @@ bool RemoteClient::connect(int port) header.version != 1) { std::cerr << "Invalid handshake response." << endl; - socket.Close(); + socket->Close(); return active = false; } @@ -185,22 +189,22 @@ bool RemoteClient::connect(int port) void RemoteClient::disconnect() { - if (active && socket.IsSocketValid()) + if (active && socket->IsSocketValid()) { RPCMessageHeader header; header.id = RPC_REQUEST_QUIT; header.size = 0; - if (socket.Send((uint8_t*)&header, sizeof(header)) != sizeof(header)) + if (socket->Send((uint8_t*)&header, sizeof(header)) != sizeof(header)) std::cerr << "Could not send the disconnect message." << endl; } - socket.Close(); + socket->Close(); } bool RemoteClient::bind(color_ostream &out, RemoteFunctionBase *function, const std::string &name, const std::string &proto) { - if (!active || !socket.IsSocketValid()) + if (!active || !socket->IsSocketValid()) return false; bind_call.reset(); @@ -227,7 +231,7 @@ bool RemoteClient::bind(color_ostream &out, RemoteFunctionBase *function, command_result RemoteClient::run_command(color_ostream &out, const std::string &cmd, const std::vector<std::string> &args) { - if (!active || !socket.IsSocketValid()) + if (!active || !socket->IsSocketValid()) { out.printerr("In RunCommand: client connection not valid.\n"); return CR_FAILURE; @@ -278,7 +282,7 @@ bool RemoteFunctionBase::bind(color_ostream &out, RemoteClient *client, return client->bind(out, this, name, proto); } -bool DFHack::sendRemoteMessage(CSimpleSocket &socket, int16_t id, const MessageLite *msg, int *psz) +bool DFHack::sendRemoteMessage(CSimpleSocket *socket, int16_t id, const MessageLite *msg, int *psz) { int size = msg->ByteSize(); int fullsz = size + sizeof(RPCMessageHeader); @@ -295,7 +299,7 @@ bool DFHack::sendRemoteMessage(CSimpleSocket &socket, int16_t id, const MessageL if (!msg->SerializeToArray(data.get() + sizeof(RPCMessageHeader), size)) return false; - return (socket.Send(data.get(), fullsz) == fullsz); + return (socket->Send(data.get(), fullsz) == fullsz); } command_result RemoteFunctionBase::execute(color_ostream &out, @@ -307,7 +311,7 @@ command_result RemoteFunctionBase::execute(color_ostream &out, return CR_NOT_IMPLEMENTED; } - if (!p_client->socket.IsSocketValid()) + if (!p_client->socket->IsSocketValid()) { out.printerr("In call to %s::%s: invalid socket.\n", this->proto.c_str(), this->name.c_str()); |
