INET Framework for OMNeT++/OMNEST
inet::tcp::TCP_NSC_ByteStreamReceiveQueue Class Reference

Receive queue that manages actual bytes. More...

#include <TCP_NSC_ByteStreamQueues.h>

Inheritance diagram for inet::tcp::TCP_NSC_ByteStreamReceiveQueue:
inet::tcp::TCP_NSC_ReceiveQueue

Public Member Functions

 TCP_NSC_ByteStreamReceiveQueue ()
 Ctor. More...
 
virtual ~TCP_NSC_ByteStreamReceiveQueue ()
 Virtual dtor. More...
 
virtual void setConnection (TCP_NSC_Connection *connP) override
 Add a connection queue. More...
 
virtual void notifyAboutIncomingSegmentProcessing (TCPSegment *tcpsegP) override
 Called when a TCP segment arrives. More...
 
virtual void enqueueNscData (void *dataP, int dataLengthP) override
 The method called when data received from NSC The method should set status of the data in queue to received called after socket->read_data() successfull. More...
 
virtual cPacket * extractBytesUpTo () override
 Should create a packet to be passed up to the app, up to (but NOT including) the given sequence no (usually rcv_nxt). More...
 
virtual uint32 getAmountOfBufferedBytes () const override
 Returns the number of bytes (out-of-order-segments) currently buffered in queue. More...
 
virtual uint32 getQueueLength () const override
 Returns the number of blocks currently buffered in queue. More...
 
virtual void getQueueStatus () const override
 Shows current queue status. More...
 
virtual void notifyAboutSending (const TCPSegment *tcpsegP) override
 notify the queue about output messages More...
 
- Public Member Functions inherited from inet::tcp::TCP_NSC_ReceiveQueue
 TCP_NSC_ReceiveQueue ()
 Ctor. More...
 
virtual ~TCP_NSC_ReceiveQueue ()
 Virtual dtor. More...
 

Protected Attributes

ByteArrayBuffer byteArrayBufferM
 
- Protected Attributes inherited from inet::tcp::TCP_NSC_ReceiveQueue
TCP_NSC_ConnectionconnM
 

Detailed Description

Receive queue that manages actual bytes.

Constructor & Destructor Documentation

inet::tcp::TCP_NSC_ByteStreamReceiveQueue::TCP_NSC_ByteStreamReceiveQueue ( )

Ctor.

104 {
105 }
inet::tcp::TCP_NSC_ByteStreamReceiveQueue::~TCP_NSC_ByteStreamReceiveQueue ( )
virtual

Virtual dtor.

108 {
109  // nothing to do here
110 }

Member Function Documentation

void inet::tcp::TCP_NSC_ByteStreamReceiveQueue::enqueueNscData ( void *  dataP,
int  dataLengthP 
)
overridevirtual

The method called when data received from NSC The method should set status of the data in queue to received called after socket->read_data() successfull.

Implements inet::tcp::TCP_NSC_ReceiveQueue.

126 {
127  byteArrayBufferM.push(dataP, dataLengthP);
128 }
virtual void push(const ByteArray &byteArrayP)
Push data to end of buffer.
Definition: ByteArrayBuffer.cc:40
ByteArrayBuffer byteArrayBufferM
Definition: TCP_NSC_ByteStreamQueues.h:98
cPacket * inet::tcp::TCP_NSC_ByteStreamReceiveQueue::extractBytesUpTo ( )
overridevirtual

Should create a packet to be passed up to the app, up to (but NOT including) the given sequence no (usually rcv_nxt).

It should return nullptr if there's no more data to be passed up – this method is called several times until it returns nullptr.

called after socket->read_data() successfull

Implements inet::tcp::TCP_NSC_ReceiveQueue.

131 {
132  ASSERT(connM);
133 
134  RawPacket *dataMsg = nullptr;
135  uint64 bytesInQueue = byteArrayBufferM.getLength();
136 
137  if (bytesInQueue) {
138  dataMsg = new RawPacket("DATA");
139  dataMsg->setKind(TCP_I_DATA);
140  unsigned int extractBytes = bytesInQueue;
141  char *data = new char[extractBytes];
142  unsigned int extractedBytes = byteArrayBufferM.popBytesToBuffer(data, extractBytes);
143  dataMsg->setByteLength(extractedBytes);
144  dataMsg->getByteArray().assignBuffer(data, extractedBytes);
145  }
146 
147  return dataMsg;
148 }
virtual uint64 getLength() const
Returns length of stored data.
Definition: ByteArrayBuffer.h:55
virtual unsigned int popBytesToBuffer(void *bufferP, unsigned int bufferLengthP)
Move bytes to an external buffer.
Definition: ByteArrayBuffer.cc:73
uint64_t uint64
Definition: Compat.h:28
TCP_NSC_Connection * connM
Definition: TCP_NSC_Queues.h:229
Definition: TCPCommand_m.h:98
ByteArrayBuffer byteArrayBufferM
Definition: TCP_NSC_ByteStreamQueues.h:98
uint32 inet::tcp::TCP_NSC_ByteStreamReceiveQueue::getAmountOfBufferedBytes ( ) const
overridevirtual

Returns the number of bytes (out-of-order-segments) currently buffered in queue.

Implements inet::tcp::TCP_NSC_ReceiveQueue.

151 {
152  return byteArrayBufferM.getLength();
153 }
virtual uint64 getLength() const
Returns length of stored data.
Definition: ByteArrayBuffer.h:55
ByteArrayBuffer byteArrayBufferM
Definition: TCP_NSC_ByteStreamQueues.h:98
uint32 inet::tcp::TCP_NSC_ByteStreamReceiveQueue::getQueueLength ( ) const
overridevirtual

Returns the number of blocks currently buffered in queue.

Implements inet::tcp::TCP_NSC_ReceiveQueue.

156 {
157  return byteArrayBufferM.getLength();
158 }
virtual uint64 getLength() const
Returns length of stored data.
Definition: ByteArrayBuffer.h:55
ByteArrayBuffer byteArrayBufferM
Definition: TCP_NSC_ByteStreamQueues.h:98
void inet::tcp::TCP_NSC_ByteStreamReceiveQueue::getQueueStatus ( ) const
overridevirtual

Shows current queue status.

Implements inet::tcp::TCP_NSC_ReceiveQueue.

161 {
162  // TODO
163 }
void inet::tcp::TCP_NSC_ByteStreamReceiveQueue::notifyAboutIncomingSegmentProcessing ( TCPSegment tcpsegP)
overridevirtual

Called when a TCP segment arrives.

The segment object should not be deleted.

For remove and store payload messages if need.

called before nsc_stack->if_receive_packet() called

Implements inet::tcp::TCP_NSC_ReceiveQueue.

121 {
122  ASSERT(tcpsegP);
123 }
void inet::tcp::TCP_NSC_ByteStreamReceiveQueue::notifyAboutSending ( const TCPSegment tcpsegP)
overridevirtual

notify the queue about output messages

called when connM send out a packet. for read AckNo, if have

Implements inet::tcp::TCP_NSC_ReceiveQueue.

166 {
167  // nothing to do
168 }
void inet::tcp::TCP_NSC_ByteStreamReceiveQueue::setConnection ( TCP_NSC_Connection connP)
overridevirtual

Add a connection queue.

Reimplemented from inet::tcp::TCP_NSC_ReceiveQueue.

113 {
114  ASSERT(connP);
115 
118 }
virtual void setConnection(TCP_NSC_Connection *connP)
Add a connection queue.
Definition: TCP_NSC_Queues.h:176
ByteArrayBuffer byteArrayBufferM
Definition: TCP_NSC_ByteStreamQueues.h:98
virtual void clear()
Clear buffer.
Definition: ByteArrayBuffer.cc:102

Member Data Documentation

ByteArrayBuffer inet::tcp::TCP_NSC_ByteStreamReceiveQueue::byteArrayBufferM
protected

The documentation for this class was generated from the following files: