Add serialization (which Nate now says we probably don't need)
--HG-- extra : convert_revision : e075fafdf6e72a424110a120e24ca71cb44cfb03
This commit is contained in:
parent
9dac0d3c56
commit
48ce8b70e6
2 changed files with 50 additions and 0 deletions
|
@ -163,6 +163,7 @@ EtherTap::detach()
|
|||
{
|
||||
DPRINTF(Ethernet, "EtherTap detached\n");
|
||||
delete event;
|
||||
event = 0;
|
||||
close(socket);
|
||||
socket = -1;
|
||||
}
|
||||
|
@ -262,6 +263,52 @@ EtherTap::retransmit()
|
|||
txEvent.schedule(curTick + 1000);
|
||||
}
|
||||
|
||||
//=====================================================================
|
||||
|
||||
void
|
||||
EtherTap::serialize(ostream &os)
|
||||
{
|
||||
SERIALIZE_SCALAR(socket);
|
||||
SERIALIZE_SCALAR(buflen);
|
||||
SERIALIZE_ARRAY((uint8_t *)buffer,buflen);
|
||||
SERIALIZE_SCALAR(buffer_offset);
|
||||
SERIALIZE_SCALAR(data_len);
|
||||
|
||||
bool tapevent_present = false;
|
||||
if (event) {
|
||||
tapevent_present = true;
|
||||
SERIALIZE_SCALAR(tapevent_present);
|
||||
event->serialize(os);
|
||||
}
|
||||
else {
|
||||
SERIALIZE_SCALAR(tapevent_present);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
EtherTap::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
{
|
||||
UNSERIALIZE_SCALAR(socket);
|
||||
UNSERIALIZE_SCALAR(buflen);
|
||||
UNSERIALIZE_ARRAY((uint8_t *)buffer,buflen);
|
||||
UNSERIALIZE_SCALAR(buffer_offset);
|
||||
UNSERIALIZE_SCALAR(data_len);
|
||||
|
||||
bool tapevent_present;
|
||||
UNSERIALIZE_SCALAR(tapevent_present);
|
||||
if (tapevent_present) {
|
||||
event = new TapEvent(this, socket, POLLIN|POLLERR);
|
||||
|
||||
event->unserialize(cp,section);
|
||||
|
||||
if (event->queued()) {
|
||||
pollQueue.schedule(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//=====================================================================
|
||||
|
||||
BEGIN_DECLARE_SIM_OBJECT_PARAMS(EtherTap)
|
||||
|
||||
SimObjectParam<EtherInt *> peer;
|
||||
|
|
|
@ -96,6 +96,9 @@ class EtherTap : public EtherInt
|
|||
|
||||
virtual bool recvPacket(PacketPtr packet);
|
||||
virtual void sendDone();
|
||||
|
||||
virtual void serialize(std::ostream &os);
|
||||
virtual void unserialize(Checkpoint *cp, const std::string §ion);
|
||||
};
|
||||
|
||||
#endif // __ETHERTAP_HH__
|
||||
|
|
Loading…
Reference in a new issue