2 Copyright 2020 Chris Tallon
4 This file is part of VOMP.
6 VOMP is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 VOMP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with VOMP. If not, see <https://www.gnu.org/licenses/>.
24 #include <WinSock2.h> // for SOCKET
42 bool init(); // Must call this first, once on any new TCP object
43 void shutdown(); // Optional if this is to be deleted. Closes connection. Can call connect() next
44 void abortCall(); // causes a read/connect call to immediately abort
46 bool connect(const std::string& ip, u2 port);
48 bool connectSocket(const std::string& socketFile);
51 bool read(void* dest, u4 numBytes, int timeoutSec = 2); // Set timeoutSec to 0 for no timeout
52 std::stringstream readString(bool* result, int timeoutSec = 2);
53 bool write(void* src, u4 numBytes);
62 std::mutex writeMutex;
65 const int recStringBufSize{1024};
66 int recStringBufStart{};
67 int recStringBufUsed{};
69 bool waitForConnect(int connectResult);
74 int abortPipe[2]{-1, -1};