Receiver Class Reference

UDP packet receiver. More...

#include <receiver.h>

List of all members.

Public Member Functions

 Receiver (wxString remoteAddr=wxT("127.0.0.1"), unsigned short remotePort=2627, unsigned short localPort=2627, unsigned bufferLength=8192)
 Constructor.
 ~Receiver ()
 Destructor.
void UpdateSocket (wxString remoteAddr, unsigned short remotePort, unsigned short localPort)
 Rebuild Socket if some parameters has changed.
bool Receive ()
 Receive Datagram (if it is available).
unsigned GetPacketLength ()
 returns length of the packet (after last Receive() call)
char * GetPacket ()
 returns pointer to packet buffer
void ResizeBuffer (unsigned short length)
 Changes size of recieving buffer.
 Receiver (wxString remoteAddr=wxT("127.0.0.1"), unsigned short remotePort=2627, unsigned short localPort=2627, unsigned bufferLength=8192)
 Constructor.
 ~Receiver ()
 Destructor.
void UpdateSocket (wxString remoteAddr, unsigned short remotePort, unsigned short localPort)
 Rebuild Socket if some parameters has changed.
bool Receive ()
 Receive Datagram (if it is available).
unsigned GetPacketLength ()
 returns length of the packet (after last Receive() call)
char * GetPacket ()
 returns pointer to packet buffer
void ResizeBuffer (unsigned short length)
 Changes size of recieving buffer.

Private Attributes

wxIPV4address local
 Local IP address or hostname and port.
wxIPV4address remote
 Remote IP address or hostname and port.
wxDatagramSocket * recvSocket
 the UDP socket
char * packetBuffer
 Pointer to dynamic array buffer.
unsigned packetMaxLength
 Maximum length of packet (size of packetBuffer).
unsigned packetLength
 Length of the last received packet.
wxDatagramSocket * recvSocket
 the UDP socket
char * packetBuffer
 Pointer to dynamic array buffer.


Detailed Description

UDP packet receiver.

This clas use a wxDatagramSocket to receive udp Datagrams. It also uses a byte buffer to save and accept data from socket
If Receiver is not working (in the sence it is not receiving any datagrams, consider this:

Definition at line 26 of file receiver.h.


Constructor & Destructor Documentation

Receiver::Receiver ( wxString  remoteAddr = wxT("127.0.0.1"),
unsigned short  remotePort = 2627,
unsigned short  localPort = 2627,
unsigned  bufferLength = 8192 
)

Constructor.

Parameters:
remoteAddr IP address or hostname of remote peer
remotePort Port (service) of the peer
localPort Port (service) that is module listening on
bufferLength sizze of the buffer to be created

Definition at line 13 of file receiver.cpp.

00014 {
00015        packetBuffer = new char[bufferLength + 1];
00016        packetMaxLength = bufferLength;
00017 
00018        local.AnyAddress();
00019        local.Service(localPort);
00020        //remote.Hostname(remoteAddr);
00021        remote.AnyAddress();
00022        remote.Service(remotePort);
00023 
00024        recvSocket = new wxDatagramSocket(local,  wxSOCKET_NOWAIT);
00025        if (recvSocket->Error()) LOGERROR(wxT("<Tracking> Socket error while creating"));
00026 //     this->recvSocket->SetEventHandler(*this, SocketHandlingID);
00027 //     this->recvSocket->SetNotify(wxSOCKET_OUTPUT_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_CONNECTION_FLAG| wxSOCKET_LOST_FLAG);
00028 //     this->recvSocket->Notify(true);
00029 //     this->Connect(wxEVT_SOCKET, wxSocketEventHandler(Receiver::ProcessEvtSocket), NULL, this);
00030 }

Receiver::~Receiver (  ) 

Destructor.

Deletes buffer array so it can't be used from the out of the class Socket is also destroyed.

Definition at line 31 of file receiver.cpp.

00032 {
00033        delete [] packetBuffer;
00034        recvSocket->Destroy();
00035 }

Receiver::Receiver ( wxString  remoteAddr = wxT("127.0.0.1"),
unsigned short  remotePort = 2627,
unsigned short  localPort = 2627,
unsigned  bufferLength = 8192 
)

Constructor.

Parameters:
remoteAddr IP address or hostname of remote peer
remotePort Port (service) of the peer
localPort Port (service) that is module listening on
bufferLength sizze of the buffer to be created

Receiver::~Receiver (  ) 

Destructor.

Deletes buffer array so it can't be used from the out of the class Socket is also destroyed.


Member Function Documentation

void Receiver::UpdateSocket ( wxString  remoteAddr,
unsigned short  remotePort,
unsigned short  localPort 
)

Rebuild Socket if some parameters has changed.

Parameters:
remoteAddr IP address or hostname of remote peer
remotePort Port (service) of the peer
localPort Port (service) that is module listening on

Definition at line 36 of file receiver.cpp.

00037 {
00038   recvSocket->Destroy();
00039   local.AnyAddress();
00040   local.Service(localPort);
00041   //remote.Hostname(remoteAddr);
00042   remote.AnyAddress();
00043   remote.Service(remotePort);
00044   
00045 
00046        recvSocket = new wxDatagramSocket(local,  wxSOCKET_NOWAIT);
00047        if (recvSocket->Error()) LOGERROR(wxT("<Tracking> Socket error while updating"));
00048        LOGERROR(wxT("<Tracking> Socket recreated"));
00049 
00050 }

bool Receiver::Receive (  ) 

Receive Datagram (if it is available).

Definition at line 51 of file receiver.cpp.

00052 {
00053   //  recvSocket->WaitForRead(0, 10);
00054   //  recvSocket->SetTimeout(1);
00055 
00056   recvSocket->RecvFrom(remote, packetBuffer, packetMaxLength);
00057        packetLength = recvSocket->LastCount();
00058        if (packetLength != 0)
00059        {
00060               if (packetLength > packetMaxLength){ LOGERROR(wxT("<Tracking> Too long datagram received!")); return false;};
00061               if (packetLength == packetMaxLength){ LOGWARNING(wxT("<Tracking> Maximum amount of data on receiver buffer. Consider larger")); return false;};
00062               packetBuffer[packetLength] = 0;
00063               return true;
00064        }
00065        // if (recvSocket->Error()){ LOGERROR(wxT("<Tracking> Socket Error - no data received.")); return false;}
00066        return false;
00067 }

unsigned Receiver::GetPacketLength (  )  [inline]

returns length of the packet (after last Receive() call)

Definition at line 65 of file receiver.h.

00065 {return packetLength;}

char* Receiver::GetPacket (  )  [inline]

returns pointer to packet buffer

Definition at line 67 of file receiver.h.

00067 {return packetBuffer;}

void Receiver::ResizeBuffer ( unsigned short  length  ) 

Changes size of recieving buffer.

Parameters:
length - use maximum size of Packet you suppose to receive.

Definition at line 68 of file receiver.cpp.

00069 {
00070        if (length != packetMaxLength)
00071        {
00072               packetMaxLength = length;
00073               delete [] packetBuffer;
00074               packetBuffer = new char[length  + 1];
00075        }
00076 }

void Receiver::UpdateSocket ( wxString  remoteAddr,
unsigned short  remotePort,
unsigned short  localPort 
)

Rebuild Socket if some parameters has changed.

Parameters:
remoteAddr IP address or hostname of remote peer
remotePort Port (service) of the peer
localPort Port (service) that is module listening on

bool Receiver::Receive (  ) 

Receive Datagram (if it is available).

unsigned Receiver::GetPacketLength (  )  [inline]

returns length of the packet (after last Receive() call)

Definition at line 65 of file receiver.h.

00065 {return packetLength;}

char* Receiver::GetPacket (  )  [inline]

returns pointer to packet buffer

Definition at line 67 of file receiver.h.

00067 {return packetBuffer;}

void Receiver::ResizeBuffer ( unsigned short  length  ) 

Changes size of recieving buffer.

Parameters:
length - use maximum size of Packet you suppose to receive.


Member Data Documentation

wxIPV4address Receiver::local [private]

Local IP address or hostname and port.

Definition at line 30 of file receiver.h.

wxIPV4address Receiver::remote [private]

Remote IP address or hostname and port.

Definition at line 32 of file receiver.h.

wxDatagramSocket* Receiver::recvSocket [private]

the UDP socket

Definition at line 34 of file receiver.h.

char* Receiver::packetBuffer [private]

Pointer to dynamic array buffer.

Definition at line 36 of file receiver.h.

unsigned Receiver::packetMaxLength [private]

Maximum length of packet (size of packetBuffer).

Definition at line 38 of file receiver.h.

unsigned Receiver::packetLength [private]

Length of the last received packet.

Definition at line 40 of file receiver.h.

wxDatagramSocket* Receiver::recvSocket [private]

the UDP socket

Definition at line 34 of file receiver.h.

char* Receiver::packetBuffer [private]

Pointer to dynamic array buffer.

Definition at line 36 of file receiver.h.


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

Generated on Tue Mar 10 14:41:38 2009 for VRUT by  doxygen 1.5.5