EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
StreamPacketizer Class Reference

#include "StreamPacketizer.h"

Collaboration diagram for StreamPacketizer:

Public Member Functions

 ~StreamPacketizer ()
 
void InputData (const Buffer &data)
 
void Process ()
 
BufferPopPacket ()
 
void ClearBuffers ()
 

Protected Attributes

Buffer mBuffer
 
std::queue< Buffer * > mPackets
 

Detailed Description

Definition at line 31 of file StreamPacketizer.h.

Constructor & Destructor Documentation

StreamPacketizer::~StreamPacketizer ( )

Definition at line 30 of file StreamPacketizer.cpp.

References ClearBuffers().

31 {
32  ClearBuffers();
33 }

Here is the call graph for this function:

Member Function Documentation

void StreamPacketizer::ClearBuffers ( )

Definition at line 72 of file StreamPacketizer.cpp.

References PopPacket(), and SafeDelete().

Referenced by EVETCPConnection::ClearBuffers(), and ~StreamPacketizer().

73 {
74  Buffer* buf(nullptr);
75  while ((buf = PopPacket()))
76  SafeDelete( buf );
77 }
void SafeDelete(T *&p)
Deletes and nullifies a pointer.
Definition: SafeMem.h:83
Generic class for buffers.
Definition: Buffer.h:40

Here is the call graph for this function:

Here is the caller graph for this function:

void StreamPacketizer::InputData ( const Buffer data)

Definition at line 35 of file StreamPacketizer.cpp.

References Buffer::AppendSeq(), Buffer::begin(), Buffer::end(), and mBuffer.

Referenced by EVETCPConnection::ProcessReceivedData().

36 {
37  mBuffer.AppendSeq( data.begin<uint8>(), data.end<uint8>() );
38 }
unsigned __int8 uint8
Definition: eve-compat.h:46
iterator< T > begin()
Definition: Buffer.h:381
void AppendSeq(Iter first, Iter last)
Appends a sequence of elements to buffer.
Definition: Buffer.h:455
iterator< T > end()
Definition: Buffer.h:387

Here is the call graph for this function:

Here is the caller graph for this function:

Buffer * StreamPacketizer::PopPacket ( )

Definition at line 61 of file StreamPacketizer.cpp.

References mPackets.

Referenced by ClearBuffers(), EVETCPConnection::PopRep(), and tcp_callback().

62 {
63  Buffer* buf(nullptr);
64  if (!mPackets.empty()) {
65  buf = mPackets.front();
66  mPackets.pop();
67  }
68 
69  return buf;
70 }
std::queue< Buffer * > mPackets
Generic class for buffers.
Definition: Buffer.h:40

Here is the caller graph for this function:

void StreamPacketizer::Process ( )

Definition at line 40 of file StreamPacketizer.cpp.

References Buffer::const_iterator< T >::As(), Buffer::AssignSeq(), Buffer::begin(), Buffer::end(), mBuffer, and mPackets.

Referenced by EVETCPConnection::ProcessReceivedData().

41 {
43  while( true ) {
44  if (sizeof(uint32) > (end - cur))
45  break;
46 
47  const Buffer::const_iterator<uint32> len = cur.As<uint32>();
48  const Buffer::const_iterator<uint8> start = ( len + 1 ).As<uint8>();
49 
50  if (*len > (uint32)(end - start))
51  break;
52 
53  mPackets.push( new Buffer(start, start + *len));
54  cur = (start + *len);
55  }
56 
57  if( cur != mBuffer.begin<uint8>() )
58  mBuffer.AssignSeq( cur, end );
59 }
unsigned __int8 uint8
Definition: eve-compat.h:46
std::queue< Buffer * > mPackets
const_iterator< T2 > As() const
Converts const_iterator to another const_iterator with different type.
Definition: Buffer.h:108
iterator< T > begin()
Definition: Buffer.h:381
Generic class for buffers.
Definition: Buffer.h:40
unsigned __int32 uint32
Definition: eve-compat.h:50
void AssignSeq(Iter first, Iter last)
Assigns a sequence of elements to buffer.
Definition: Buffer.h:504
iterator< T > end()
Definition: Buffer.h:387

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

Buffer StreamPacketizer::mBuffer
protected

Definition at line 44 of file StreamPacketizer.h.

Referenced by InputData(), and Process().

std::queue<Buffer*> StreamPacketizer::mPackets
protected

Definition at line 46 of file StreamPacketizer.h.

Referenced by PopPacket(), and Process().


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