00001 #if !defined MulticastClient_h
00002 #define MulticastClient_h
00003
00004
00005
00006
00007
00008 #include <vector>
00009
00010 #include "./FIXEngineDefines.h"
00011 #include "EngineException.h"
00012
00013 namespace FIXForge{
00014 namespace Sockets{
00015
00016
00017
00018
00019 class FF_API MulticastClient
00020 {
00021 public:
00022
00023 MulticastClient();
00024
00025
00026 virtual ~MulticastClient();
00027
00028
00029 void join(const std::string& ip, int port);
00030
00031
00032 void join(const std::string& ip, int port, const std::string& networkInterface);
00033
00034
00035 void drop();
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 const std::vector<char>& receive();
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 const std::vector<char>& receive(long timeoutInMilliseconds);
00056
00057
00058
00059
00060 void send(const std::string& packet);
00061
00062
00063
00064
00065 void send(const char* packet, size_t packetSize);
00066
00067 private:
00068 MulticastClient(const MulticastClient&);
00069 MulticastClient& operator = (const MulticastClient&);
00070
00071 bool isJoined_;
00072
00073 struct Impl;
00074 Impl* impl_;
00075 };
00076
00077 }};
00078
00079 #endif