otsdaq  v2_04_02
TCPReceiverSocket.h
1 #ifndef _TCPReceiverSocket_h_
2 #define _TCPReceiverSocket_h_
3 
4 #include <string>
5 #include "otsdaq/NetworkUtilities/TCPPacket.h"
6 #include "otsdaq/NetworkUtilities/TCPSocket.h"
7 
8 namespace ots
9 {
10 class TCPReceiverSocket : public virtual TCPSocket
11 {
12  public:
13  TCPReceiverSocket(int socketId = invalidSocketId);
14  virtual ~TCPReceiverSocket();
15  // TCPReceiverSocket(TCPReceiverSocket const&) = delete ;
16  TCPReceiverSocket(TCPReceiverSocket&& theTCPReceiverSocket) = default;
17 
18  std::size_t receive(char* buffer, std::size_t bufferSize = maxSocketSize);
19  template<class T>
20  T receive()
21  {
22  T buffer;
23  buffer.resize(maxSocketSize);
24  int length = receive(static_cast<char*>(&buffer.at(0)), maxSocketSize);
25  buffer.resize(length);
26  // std::cout << __PRETTY_FUNCTION__ << "Message received-" << fBuffer << "-" <<
27  // std::endl;
28  return buffer; // c++11 doesn't make a copy anymore when returned
29  }
30  std::string receivePacket(void);
31 
32  private:
33  static constexpr unsigned int maxSocketSize = 65536;
34  TCPPacket fPacket;
35 };
36 }
37 #endif