/home/aherms/Code/git/awds-routing/src/awds/TraceUcPacket.h

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) // space left for this node?
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 /* This stuff is for emacs
00049  * Local variables:
00050  * mode:c++
00051  * c-basic-offset: 4
00052  * End:
00053  */

Generated on Tue Dec 11 17:58:48 2007 for AWDS by  doxygen 1.5.3-20071008