2020-12-28 16:22:12 +00:00
|
|
|
/**
|
|
|
|
** Supermodel
|
|
|
|
** A Sega Model 3 Arcade Emulator.
|
|
|
|
** Copyright 2011-2020 Bart Trzynadlowski, Nik Henson, Ian Curtis,
|
|
|
|
** Harry Tuttle, and Spindizzi
|
|
|
|
**
|
|
|
|
** This file is part of Supermodel.
|
|
|
|
**
|
|
|
|
** Supermodel is free software: you can redistribute it and/or modify it under
|
|
|
|
** the terms of the GNU General Public License as published by the Free
|
|
|
|
** Software Foundation, either version 3 of the License, or (at your option)
|
|
|
|
** any later version.
|
|
|
|
**
|
|
|
|
** Supermodel is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
** more details.
|
|
|
|
**
|
|
|
|
** You should have received a copy of the GNU General Public License along
|
|
|
|
** with Supermodel. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
**/
|
|
|
|
|
2020-06-13 19:46:12 +00:00
|
|
|
#ifndef _TCPRECEIVE_H_
|
|
|
|
#define _TCPRECEIVE_H_
|
|
|
|
|
|
|
|
#include <thread>
|
|
|
|
#include <atomic>
|
|
|
|
#include <vector>
|
2020-07-27 10:28:48 +00:00
|
|
|
#include "SDLIncludes.h"
|
2020-06-13 19:46:12 +00:00
|
|
|
|
|
|
|
class TCPReceive
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
TCPReceive(int port);
|
|
|
|
~TCPReceive();
|
|
|
|
|
2021-03-15 15:55:39 +00:00
|
|
|
bool CheckDataAvailable(int timeoutMS = 0); // timeoutMS -1 = wait forever until data arrives, 0 = no waiting, 1+ wait time in milliseconds
|
2020-06-13 19:46:12 +00:00
|
|
|
std::vector<char>& Receive();
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
void ListenFunc();
|
|
|
|
|
|
|
|
TCPsocket m_listenSocket;
|
|
|
|
std::atomic<TCPsocket> m_receiveSocket;
|
2021-03-15 15:55:39 +00:00
|
|
|
SDLNet_SocketSet m_socketSet;
|
2020-06-13 19:46:12 +00:00
|
|
|
std::thread m_listenThread;
|
|
|
|
std::atomic_bool m_running;
|
|
|
|
std::vector<char> m_recBuffer;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|