|
@@ -32,10 +32,7 @@ using namespace std::placeholders;
|
|
|
|
|
|
class Transport {
|
|
|
public:
|
|
|
- Transport(std::shared_ptr<Transport> lower = nullptr) : mLower(std::move(lower)) {
|
|
|
- if (mLower)
|
|
|
- mLower->onRecv(std::bind(&Transport::incoming, this, _1));
|
|
|
- }
|
|
|
+ Transport(std::shared_ptr<Transport> lower = nullptr) : mLower(std::move(lower)) {}
|
|
|
virtual ~Transport() { stop(); }
|
|
|
|
|
|
virtual bool stop() {
|
|
@@ -44,10 +41,15 @@ public:
|
|
|
return !mShutdown.exchange(true);
|
|
|
}
|
|
|
|
|
|
- virtual bool send(message_ptr message) = 0;
|
|
|
+ void registerIncoming() {
|
|
|
+ if (mLower)
|
|
|
+ mLower->onRecv(std::bind(&Transport::incoming, this, _1));
|
|
|
+ }
|
|
|
|
|
|
void onRecv(message_callback callback) { mRecvCallback = std::move(callback); }
|
|
|
|
|
|
+ virtual bool send(message_ptr message) = 0;
|
|
|
+
|
|
|
protected:
|
|
|
void recv(message_ptr message) { mRecvCallback(message); }
|
|
|
|