ROOT logo
// $Id: SUdpPacket.cxx 2667 2012-02-25 02:21:06Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#include "SUdpPacket.h"

// SUdpPacket

//______________________________________________________________________________
//
//

ClassImp(SUdpPacket);

//==============================================================================

SUdpPacket::SUdpPacket() :
  mBuffLen(0), mAddrLen(0), mPort(0), mBuff(0)
{}

SUdpPacket::SUdpPacket(const GTime& t,
                       UChar_t* addr, UShort_t addr_len, UShort_t port,
                       UChar_t* buff, Int_t buff_len)
{
  mRecvTime = t;
  mBuffLen = buff_len;
  mAddrLen = addr_len;
  mPort = port;
  memcpy(mAddr, addr, addr_len);
  mBuff = new UChar_t[buff_len + 1]; // Extra byte, for \n, 0, etc.
  memcpy(mBuff, buff, buff_len);
}

SUdpPacket::~SUdpPacket()
{
  delete [] mBuff;
}

//==============================================================================

void SUdpPacket::NetStreamer(TBuffer& b)
{
  if (b.IsReading())
  {
    UShort_t old_buff_len = mBuffLen;
    mRecvTime.NetStreamer(b);
    b >> mPort >> mAddrLen >> mBuffLen;
    b.ReadFastArray(mAddr, mAddrLen);
    if (mBuffLen != old_buff_len)
    {
      delete [] mBuff;
      mBuff = new UChar_t[mBuffLen + 1]; // Extra byte, for \n, 0, etc.
    }
    b.ReadFastArray(mBuff, mBuffLen);
  }
  else
  {
    mRecvTime.NetStreamer(b);
    b << mPort << mAddrLen << mBuffLen;
    b.WriteFastArray(mAddr, mAddrLen);
    b.WriteFastArray(mBuff, mBuffLen);
  }
}

Int_t SUdpPacket::NetBufferSize() const
{
  return mRecvTime.NetBufferSize() + sizeof(Int_t) + 2 * sizeof(UShort_t) +
         mAddrLen + mBuffLen;
}

UInt_t SUdpPacket::Ip4AsUInt() const
{
  const void *vp = mAddr;
  return * ((const UInt_t*) vp);
}
 SUdpPacket.cxx:1
 SUdpPacket.cxx:2
 SUdpPacket.cxx:3
 SUdpPacket.cxx:4
 SUdpPacket.cxx:5
 SUdpPacket.cxx:6
 SUdpPacket.cxx:7
 SUdpPacket.cxx:8
 SUdpPacket.cxx:9
 SUdpPacket.cxx:10
 SUdpPacket.cxx:11
 SUdpPacket.cxx:12
 SUdpPacket.cxx:13
 SUdpPacket.cxx:14
 SUdpPacket.cxx:15
 SUdpPacket.cxx:16
 SUdpPacket.cxx:17
 SUdpPacket.cxx:18
 SUdpPacket.cxx:19
 SUdpPacket.cxx:20
 SUdpPacket.cxx:21
 SUdpPacket.cxx:22
 SUdpPacket.cxx:23
 SUdpPacket.cxx:24
 SUdpPacket.cxx:25
 SUdpPacket.cxx:26
 SUdpPacket.cxx:27
 SUdpPacket.cxx:28
 SUdpPacket.cxx:29
 SUdpPacket.cxx:30
 SUdpPacket.cxx:31
 SUdpPacket.cxx:32
 SUdpPacket.cxx:33
 SUdpPacket.cxx:34
 SUdpPacket.cxx:35
 SUdpPacket.cxx:36
 SUdpPacket.cxx:37
 SUdpPacket.cxx:38
 SUdpPacket.cxx:39
 SUdpPacket.cxx:40
 SUdpPacket.cxx:41
 SUdpPacket.cxx:42
 SUdpPacket.cxx:43
 SUdpPacket.cxx:44
 SUdpPacket.cxx:45
 SUdpPacket.cxx:46
 SUdpPacket.cxx:47
 SUdpPacket.cxx:48
 SUdpPacket.cxx:49
 SUdpPacket.cxx:50
 SUdpPacket.cxx:51
 SUdpPacket.cxx:52
 SUdpPacket.cxx:53
 SUdpPacket.cxx:54
 SUdpPacket.cxx:55
 SUdpPacket.cxx:56
 SUdpPacket.cxx:57
 SUdpPacket.cxx:58
 SUdpPacket.cxx:59
 SUdpPacket.cxx:60
 SUdpPacket.cxx:61
 SUdpPacket.cxx:62
 SUdpPacket.cxx:63
 SUdpPacket.cxx:64
 SUdpPacket.cxx:65
 SUdpPacket.cxx:66
 SUdpPacket.cxx:67
 SUdpPacket.cxx:68
 SUdpPacket.cxx:69
 SUdpPacket.cxx:70
 SUdpPacket.cxx:71
 SUdpPacket.cxx:72
 SUdpPacket.cxx:73
 SUdpPacket.cxx:74
 SUdpPacket.cxx:75
 SUdpPacket.cxx:76
 SUdpPacket.cxx:77