owlps/owlps-positioning/src/outputtcpsocketevaal.hh

52 lines
1.3 KiB
C++
Raw Normal View History

2011-07-14 22:07:48 +02:00
#ifndef _OWLPS_POSITIONING_OUTPUTTCPSOCKETEVAAL_HH_
#define _OWLPS_POSITIONING_OUTPUTTCPSOCKETEVAAL_HH_
#include "outputmedium.hh"
#include <string>
#include <stdint.h> // <cstdint> is not C++ 98 compliant
#include <arpa/inet.h>
/// Sends results to a remote host by TCP (EvAAL competition format)
/**
* The results are sent through an TCP socket as a string value,
* conforming to the EvAAL competition format.
*/
class OutputTCPSocketEvAAL: public OutputMedium
{
protected:
int sockfd ;
std::string remote_host ;
uint_fast16_t remote_port ;
struct sockaddr_in server_info ;
struct sockaddr_in client_info ;
/** @name Operations */
//@{
/// Initialises the socket
bool init_socket(void) ;
/// Sends a string through the socket
bool send_data(const std::string &data) const ;
/// Receives and parse the acknowledgement from the server
bool acknowledge(void) const ;
//@}
public:
OutputTCPSocketEvAAL(const std::string &_remote_host = "127.0.0.1",
const uint_fast16_t _remote_port = 4444) ;
~OutputTCPSocketEvAAL(void) ;
/** @name Operations */
//@{
void write(const Result &result) ;
void write(const ResultList &results) ;
/// Closes the socket
bool close_socket(void) ;
//@}
} ;
#endif // _OWLPS_POSITIONING_OUTPUTTCPSOCKETEVAAL_HH_