/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__ICP_ICPMSG_H
#define POLYGRAPH__ICP_ICPMSG_H
#include "xstd/NetAddr.h"
#include "xstd/Socket.h"
#include "base/ObjId.h"
#include "icp/IcpOpCode.h"
// common part of ICP requests and replies
class IcpMsg {
public:
IcpMsg();
int logCat() const { return theLogCat; }
IcpOpCode opCode() const { return theOpCode; }
int reqNum() const { return theReqNum; }
const ObjId &oid() const { return theOid; }
const NetAddr &peer() const { return theAddr; }
Size size() const { return theSize; }
void logCat(int aCat) { theLogCat = aCat; }
void opCode(IcpOpCode anOc) { theOpCode = anOc; }
void oid(const ObjId &anOid) { theOid = anOid; }
void reqNum(int aReqNum) { theReqNum = aReqNum; }
void peer(const NetAddr &anAddr) { theAddr = anAddr; }
bool send(Socket &s) const;
bool receive(Socket &s);
protected:
bool finish(Error err);
protected:
NetAddr theAddr; // peer address
ObjId theOid;
int theReqNum;
Size theSize;
int theLogCat;
IcpOpCode theOpCode;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1