//*****************************************************************************
// RCF - Remote Call Framework
// Copyright (c) 2005. All rights reserved.
// Developed by Jarl Lindrud.
// Contact: jlindrud@hotmail.com .
//*****************************************************************************
#ifndef INCLUDE_RCF_UDPCLIENTTRANSPORT_HPP
#define INCLUDE_RCF_UDPCLIENTTRANSPORT_HPP
#include <RCF/ClientTransport.hpp>
#include <RCF/UsingBsdSockets.hpp>
namespace RCF {
class UdpClientTransport;
typedef boost::shared_ptr<UdpClientTransport> UdpClientTransportPtr;
class UdpClientTransport : public I_ClientTransport
{
private:
std::string ip;
int port;
int sock;
unsigned int recvTimeoutMs;
sockaddr_in srcAddr;
sockaddr_in destAddr;
public:
UdpClientTransport(const std::string &ip, int port);
UdpClientTransport(const sockaddr &dest);
~UdpClientTransport();
std::auto_ptr<I_ClientTransport> clone() const;
EndpointPtr getEndpointPtr() const;
int connect();
int send(const std::string &data, unsigned int timeoutMs);
int receive(std::string &data, unsigned int timeoutMs);
void close();
bool isConnected();
void setTransportFilters(const std::vector<FilterPtr> &filters);
};
} // namespace RCF
#endif // ! INCLUDE_RCF_UDPCLIENTTRANSPORT_HPP