summaryrefslogtreecommitdiff
path: root/src/dev/net/dist_etherlink.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/net/dist_etherlink.hh')
-rw-r--r--src/dev/net/dist_etherlink.hh16
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; }
};
/**