transport.hpp
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
22 #ifndef NDN_TRANSPORT_HPP
23 #define NDN_TRANSPORT_HPP
24 
25 #include <vector>
26 #include "../common.hpp"
27 
28 namespace ndn {
29 
30 class ElementListener;
31 
32 class Transport {
33 public:
39  public:
40  virtual ~ConnectionInfo();
41  };
42 
43  typedef func_lib::function<void()> OnConnected;
44 
54  virtual bool
55  isLocal(const Transport::ConnectionInfo& connectionInfo);
56 
62  virtual bool
63  isAsync();
64 
75  virtual void
76  connect(const Transport::ConnectionInfo& connectionInfo,
77  ElementListener& elementListener, const OnConnected& onConnected);
78 
84  virtual void
85  send(const uint8_t *data, size_t dataLength);
86 
87  void
88  send(const std::vector<uint8_t>& data)
89  {
90  send(&data[0], data.size());
91  }
92 
102  virtual void
103  processEvents() = 0;
104 
105  virtual bool
106  getIsConnected();
107 
112  virtual void
113  close();
114 
115  virtual ~Transport();
116 };
117 
118 }
119 
120 #endif
Definition: transport.hpp:32
virtual void send(const uint8_t *data, size_t dataLength)
Send data to the host.
Definition: transport.cpp:54
Copyright (C) 2013-2016 Regents of the University of California.
Definition: common.hpp:35
virtual void processEvents()=0
Process any data to receive.
Definition: transport.cpp:60
virtual bool isAsync()
Check if this transport is async where connect needs to use the onConnected callback.
Definition: transport.cpp:40
virtual void connect(const Transport::ConnectionInfo &connectionInfo, ElementListener &elementListener, const OnConnected &onConnected)
Connect according to the info in ConnectionInfo, and processEvents() will use elementListener.
Definition: transport.cpp:47
An ElementListener extends an ndn_ElementListener struct to proved an abstract virtual onReceivedElem...
Definition: element-listener.hpp:33
virtual void close()
Close the connection.
Definition: transport.cpp:72
virtual bool isLocal(const Transport::ConnectionInfo &connectionInfo)
Determine whether this transport connecting according to connectionInfo is to a node on the current m...
Definition: transport.cpp:34
A Transport::ConnectionInfo is a base class for connection information used by subclasses of Transpor...
Definition: transport.hpp:38