// @(#)root/net:$Name: $:$Id: TMessage.h,v 1.7 2004/05/05 14:43:34 rdm Exp $
// Author: Fons Rademakers 19/12/96
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TMessage
#define ROOT_TMessage
//////////////////////////////////////////////////////////////////////////
// //
// TMessage //
// //
// Message buffer class used for serializing objects and sending them //
// over the network. //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TBuffer
#include "TBuffer.h"
#endif
#ifndef ROOT_MessageTypes
#include "MessageTypes.h"
#endif
class TMessage : public TBuffer {
friend class TSocket;
friend class TPSocket;
private:
UInt_t fWhat; //Message type
TClass *fClass; //If message is kMESS_OBJECT pointer to object's class
Int_t fCompress; //Compression level from 0 (not compressed) to 9 (max compression)
char *fBufComp; //Compressed buffer
char *fBufCompCur; //Current position in compressed buffer
char *fCompPos; //Position of fBufCur when message was compressed
// TMessage objects cannot be copied or assigned
TMessage(const TMessage &); // not implemented
void operator=(const TMessage &); // not implemented
protected:
TMessage(void *buf, Int_t bufsize); // only called by T(P)Socket::Recv()
void SetLength() const; // only called by T(P)Socket::Send()
public:
TMessage(UInt_t what = kMESS_ANY);
virtual ~TMessage();
void Forward();
TClass *GetClass() const { return fClass; }
void Reset();
void Reset(UInt_t what) { SetWhat(what); Reset(); }
UInt_t What() const { return fWhat; }
void SetWhat(UInt_t what);
void SetCompressionLevel(Int_t level = 1);
Int_t GetCompressionLevel() const { return fCompress; }
Int_t Compress();
Int_t Uncompress();
char *CompBuffer() const { return fBufComp; }
Int_t CompLength() const { return (Int_t)(fBufCompCur - fBufComp); }
ClassDef(TMessage,0) // Message buffer class
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1