Files
secondo/Algebras/Distributed3/tes/MessageBroker/NetworkedClient.h

41 lines
1.2 KiB
C
Raw Normal View History

2026-01-23 17:03:45 +08:00
/*
*/
#ifndef SECONDO_NETWORKEDTESCLIENT_H
#define SECONDO_NETWORKEDTESCLIENT_H
#include "MessageClient.h"
#include "../Helpers/RemoteEndpoint.h"
#include "Message.h"
#include "SocketIO.h"
namespace distributed3 {
class NetworkedClient : public MessageClient {
public:
explicit NetworkedClient(const RemoteEndpoint &host) noexcept(false);
~NetworkedClient() override;
void sendTuple(const int eid, const int slot, Tuple* tuple) override;
void sendFinishMessage(const int eid) /*const*/ override;
private:
void send(); // sendThread takes Messages and sends them over the network
inline void sendMessageAsync(Message* message);
//void sendMessage(Message message) /*const*/ ;
//void sendMessage(std::pair<size_t,char*>) /*const*/ ;
void sendMessage(size_t,char*) /*const*/ ;
void sendMessage(Message* message);
// void sendMessage(std::shared_ptr<Message> message) /*const*/ ;
mutable Socket *socket = nullptr;
boost::thread* sendThread = nullptr; // unique_ptr, naked thread ?
boost::mutex outboxmtx;
boost::condition_variable outboxcond;
//std::queue<Message*>* outbox;
std::queue<std::pair<size_t,char*>>* binOutbox;
};
}
#endif //SECONDO_NETWORKEDCLIENT_H