#pragma once #if defined(__unix__) || defined(__APPLE__) #include "Participants/ParticipantUDP.h" namespace RoboidControl { class ParticipantUDP : public ParticipantUDPGeneric { public: /// @brief Create a participant without connecting to a site /// @param port The port on which the participant communicates /// These participant typically broadcast Participant messages to let site /// servers on the local network know their presence. Alternatively they can /// broadcast information which can be used directly by other participants. ParticipantUDP(int port = 7681); /// @brief Create a participant which will try to connect to a site. /// @param ipAddress The IP address of the site /// @param port The port used by the site /// @param localPort The port used by the local participant ParticipantUDP(const char* ipAddress, int port = 7681, int localPort = 7681); void SetupUDP(int localPort, const char* remoteIpAddress, int remotePort) override; void ReceiveUDP() override; //void Setup(int localPort, const char* remoteIpAddress, int remotePort); void SetupTCP(const char* remoteIpAddress, int remotePort); // void Receive(); int ReceiveTCP(); bool SendTo(RemoteParticipantUDP* remoteParticipant, int bufferSize); bool Publish(IMessage* msg) override; protected: #if defined(__unix__) || defined(__APPLE__) sockaddr_in remote_addr; sockaddr_in server_addr; sockaddr_in broadcast_addr; #endif }; } // namespace RoboidControl #endif