Class used to read/send single OpenFlow message from/to an open socket. More...
#include "ofswitch13-socket-handler.h"
Public Types | |
typedef Callback< void, Ptr< Packet >, Address > | MessageCallback |
Public Member Functions | |
OFSwitch13SocketHandler (Ptr< Socket > socket) | |
Complete constructor. More... | |
~OFSwitch13SocketHandler () override | |
Dummy destructor, see DoDispose. More... | |
int | SendMessage (Ptr< Packet > packet) |
Send an OpenFlow message to the TCP socket. More... | |
void | SetReceiveCallback (MessageCallback cb) |
Set the callback to invoke whenever an OpenFlow message has been received at the associated socket. More... | |
![]() | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId () |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Protected Member Functions | |
void | DoDispose () override |
Destructor implementation. More... | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | Recv (Ptr< Socket > socket) |
Callback for bytes available in rx buffer. More... | |
void | Send (Ptr< Socket > socket, uint32_t available) |
Callback for bytes available in tx buffer. More... | |
Private Attributes | |
uint32_t | m_pendingBytes |
Pending bytes for message. More... | |
Ptr< Packet > | m_pendingPacket |
Buffer for receiving bytes. More... | |
MessageCallback | m_receivedMsg |
OpenFlow message callback. More... | |
Ptr< Socket > | m_socket |
TCP socket. More... | |
std::queue< Ptr< Packet > > | m_txQueue |
TX queue. More... | |
Additional Inherited Members | |
![]() | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Class used to read/send single OpenFlow message from/to an open socket.
Introspection did not find any typical Config paths.
The TCP socket receive callback is connected to the Recv () method, which is responsible for reading the correct number of bytes of a complete OpenFlow message. When the OpenFlow message is completely received, it is sent to the connected callback that was previously set using the SetReceiveCallback () method. On the other direction, the TCP socket send callback is connected to the Send () method that forwards OpenFlow message received by the SendMessage () method to the open socket, respecting the original order of the messages.
No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 144 bytes (on a 64-bit architecture).
Definition at line 47 of file ofswitch13-socket-handler.h.
typedef Callback<void, Ptr<Packet>, Address> ns3::OFSwitch13SocketHandler::MessageCallback |
packet | The packet with the received OpenFlow message. |
sender | The address of the sender. |
Definition at line 67 of file ofswitch13-socket-handler.h.
Complete constructor.
socket | The socket pointer. |
Definition at line 37 of file ofswitch13-socket-handler.cc.
References ns3::MakeCallback(), NS_LOG_FUNCTION, Recv(), Send(), ns3::Socket::SetRecvCallback(), and ns3::Socket::SetSendCallback().
|
override |
Dummy destructor, see DoDispose.
Definition at line 50 of file ofswitch13-socket-handler.cc.
References NS_LOG_FUNCTION.
|
overrideprotectedvirtual |
Destructor implementation.
Reimplemented from ns3::Object.
Definition at line 75 of file ofswitch13-socket-handler.cc.
References m_pendingPacket, m_socket, and NS_LOG_FUNCTION.
|
static |
Register this type.
Definition at line 29 of file ofswitch13-socket-handler.cc.
References ns3::TypeId::SetParent().
Callback for bytes available in rx buffer.
socket | The connected socket. |
Definition at line 111 of file ofswitch13-socket-handler.cc.
References ns3::Packet::AddAtEnd(), ns3::Packet::CopyData(), ns3::Socket::GetRxAvailable(), ns3::Callback< R, UArgs >::IsNull(), m_pendingBytes, m_pendingPacket, m_receivedMsg, min, NS_LOG_FUNCTION, and ns3::Socket::RecvFrom().
Referenced by OFSwitch13SocketHandler().
Callback for bytes available in tx buffer.
socket | The connected socket. |
available | The number of bytes available into tx buffer. |
Definition at line 84 of file ofswitch13-socket-handler.cc.
References ns3::Socket::GetErrno(), ns3::Packet::GetSize(), ns3::Socket::GetTxAvailable(), m_txQueue, NS_LOG_ERROR, NS_LOG_FUNCTION, NS_LOG_WARN, and ns3::Socket::Send().
Referenced by OFSwitch13SocketHandler(), and SendMessage().
Send an OpenFlow message to the TCP socket.
packet | The packet with the OpenFlow message. |
Definition at line 64 of file ofswitch13-socket-handler.cc.
References ns3::Socket::GetTxAvailable(), m_socket, m_txQueue, NS_LOG_FUNCTION, and Send().
void ns3::OFSwitch13SocketHandler::SetReceiveCallback | ( | MessageCallback | cb | ) |
Set the callback to invoke whenever an OpenFlow message has been received at the associated socket.
cb | The callback to invoke. |
Definition at line 56 of file ofswitch13-socket-handler.cc.
References m_receivedMsg, and NS_LOG_FUNCTION.
|
private |
Pending bytes for message.
Definition at line 103 of file ofswitch13-socket-handler.h.
Referenced by Recv().
Buffer for receiving bytes.
Definition at line 102 of file ofswitch13-socket-handler.h.
Referenced by DoDispose(), and Recv().
|
private |
OpenFlow message callback.
Definition at line 104 of file ofswitch13-socket-handler.h.
Referenced by Recv(), and SetReceiveCallback().
TCP socket.
Definition at line 101 of file ofswitch13-socket-handler.h.
Referenced by DoDispose(), and SendMessage().
TX queue.
Definition at line 105 of file ofswitch13-socket-handler.h.
Referenced by Send(), and SendMessage().