diff options
author | Håvard Pettersen <havardpe@oath.com> | 2018-09-14 10:15:09 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2018-09-14 10:16:39 +0000 |
commit | 0f5a8542736289d859ffdc9a6c779029847211f3 (patch) | |
tree | 0848c692db72038b0cc15a003a53e29f2b2e721c /fnet | |
parent | a9e60b19626bc1a592a084efbc4aab07e9ad0f65 (diff) |
handle add/close commands in separate functions
Diffstat (limited to 'fnet')
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.cpp | 42 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.h | 3 |
2 files changed, 31 insertions, 14 deletions
diff --git a/fnet/src/vespa/fnet/transport_thread.cpp b/fnet/src/vespa/fnet/transport_thread.cpp index b0388bdc140..bb637194748 100644 --- a/fnet/src/vespa/fnet/transport_thread.cpp +++ b/fnet/src/vespa/fnet/transport_thread.cpp @@ -151,6 +151,32 @@ FNET_TransportThread::DiscardEvent(FNET_ControlPacket *cpacket, } +void +FNET_TransportThread::handle_add_cmd(FNET_IOComponent *ioc) +{ + if (ioc->handle_add_event()) { + AddComponent(ioc); + ioc->_flags._ioc_added = true; + ioc->attach_selector(_selector); + } else { + ioc->Close(); + AddDeleteComponent(ioc); + } +} + + +void +FNET_TransportThread::handle_close_cmd(FNET_IOComponent *ioc) +{ + if (ioc->_flags._ioc_added) { + RemoveComponent(ioc); + ioc->SubRef(); + } + ioc->Close(); + AddDeleteComponent(ioc); +} + + extern "C" { static void pipehandler(int) @@ -423,14 +449,7 @@ FNET_TransportThread::handle_wakeup() switch (packet->GetCommand()) { case FNET_ControlPacket::FNET_CMD_IOC_ADD: - if (context._value.IOC->handle_add_event()) { - AddComponent(context._value.IOC); - context._value.IOC->_flags._ioc_added = true; - context._value.IOC->attach_selector(_selector); - } else { - context._value.IOC->Close(); - AddDeleteComponent(context._value.IOC); - } + handle_add_cmd(context._value.IOC); break; case FNET_ControlPacket::FNET_CMD_IOC_ENABLE_READ: context._value.IOC->EnableReadEvent(true); @@ -449,12 +468,7 @@ FNET_TransportThread::handle_wakeup() context._value.IOC->SubRef(); break; case FNET_ControlPacket::FNET_CMD_IOC_CLOSE: - if (context._value.IOC->_flags._ioc_added) { - RemoveComponent(context._value.IOC); - context._value.IOC->SubRef(); - } - context._value.IOC->Close(); - AddDeleteComponent(context._value.IOC); + handle_close_cmd(context._value.IOC); break; } } diff --git a/fnet/src/vespa/fnet/transport_thread.h b/fnet/src/vespa/fnet/transport_thread.h index 1b8d1fa4eeb..408d20619d2 100644 --- a/fnet/src/vespa/fnet/transport_thread.h +++ b/fnet/src/vespa/fnet/transport_thread.h @@ -143,6 +143,9 @@ private: FNET_Config *GetConfig() { return &_config; } + void handle_add_cmd(FNET_IOComponent *ioc); + void handle_close_cmd(FNET_IOComponent *ioc); + public: /** * Construct a transport object. To activate your newly created |