diff options
Diffstat (limited to 'src/dev/net/dist_etherlink.hh')
-rw-r--r-- | src/dev/net/dist_etherlink.hh | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/dev/net/dist_etherlink.hh b/src/dev/net/dist_etherlink.hh index e8218941a..83f28f2b2 100644 --- a/src/dev/net/dist_etherlink.hh +++ b/src/dev/net/dist_etherlink.hh @@ -118,15 +118,13 @@ class DistEtherLink : public EtherObject * Send done callback. Called from doneEvent. */ void txDone(); - typedef EventWrapper<TxLink, &TxLink::txDone> DoneEvent; - friend void DoneEvent::process(); - DoneEvent doneEvent; + EventFunctionWrapper doneEvent; public: TxLink(const std::string &name, DistEtherLink *p, double invBW, Tick delay_var, EtherDump *d) : Link(name, p, d, &doneEvent), ticksPerByte(invBW), - delayVar(delay_var), doneEvent(this) {} + delayVar(delay_var), doneEvent([this]{ txDone(); }, name) {} ~TxLink() {} /** @@ -159,16 +157,14 @@ class DistEtherLink : public EtherObject * Receive done callback method. Called from doneEvent. */ void rxDone(); - typedef EventWrapper<RxLink, &RxLink::rxDone> DoneEvent; - friend void DoneEvent::process(); - DoneEvent _doneEvent; + EventFunctionWrapper _doneEvent; public: RxLink(const std::string &name, DistEtherLink *p, Tick delay, EtherDump *d) : - Link(name, p, d, &_doneEvent), - linkDelay(delay), _doneEvent(this) {} + Link(name, p, d, &_doneEvent), linkDelay(delay), + _doneEvent([this]{ rxDone(); }, name) {} ~RxLink() {} /** @@ -178,7 +174,7 @@ class DistEtherLink : public EtherObject /** * Done events will be scheduled by DistIface (so we need the accessor) */ - const DoneEvent *doneEvent() const { return &_doneEvent; } + const EventFunctionWrapper *doneEvent() const { return &_doneEvent; } }; /** |