00001 #ifndef _TRACEUCPACKET_H__
00002 #define _TRACEUCPACKET_H__
00003
00004 #include <awds/UnicastPacket.h>
00005
00006 namespace awds {
00007
00008 class TraceUcPacket : public UnicastPacket {
00009
00010 public:
00011 static const size_t OffsetTraceEnd = UnicastPacket::UnicastPacketEnd;
00012 static const size_t TraceUcPacketEnd = OffsetTraceEnd + 2;
00013
00014 TraceUcPacket(BasePacket& p) : UnicastPacket(p) {
00015
00016 }
00017
00018 void setTracePointer(size_t offset) {
00019 toArray<u_int16_t>(offset, packet.buffer + OffsetTraceEnd);
00020 }
00021
00022 size_t getTracePointer() const {
00023 return fromArray<u_int16_t>(packet.buffer + OffsetTraceEnd);
00024 }
00025
00026 bool appendNode(const NodeId& id) {
00027 size_t offset = getTracePointer();
00028
00029 if (offset + NodeId::size >= packet.size)
00030 return false;
00031
00032 id.toArray(packet.buffer + offset);
00033 setTracePointer(offset + NodeId::size);
00034 GEA.dbg() << "appending " << id
00035 << " tp=" << (offset + NodeId::size)
00036 << std::endl;
00037 return true;
00038 }
00039
00040
00041
00042 };
00043 }
00044
00045
00046
00047 #endif //TRACEUCPACKET_H__
00048
00049
00050
00051
00052
00053