From d04a70a28478ff59256232e3a1bddbfe83464dc5 Mon Sep 17 00:00:00 2001 From: Gavin Norman Date: Thu, 9 Aug 2018 17:21:17 +0200 Subject: [PATCH] NeoNode Refactoring --- src/swarm/node/model/NeoNode.d | 89 ++++++++++++++++------------------ 1 file changed, 43 insertions(+), 46 deletions(-) diff --git a/src/swarm/node/model/NeoNode.d b/src/swarm/node/model/NeoNode.d index 4d00ed38..91525e22 100644 --- a/src/swarm/node/model/NeoNode.d +++ b/src/swarm/node/model/NeoNode.d @@ -199,10 +199,7 @@ public abstract class INodeBase : INode, INodeInfo ***************************************************************************/ - public this ( NodeItem node, ConnectionSetupParams conn_setup_params, - lazy ISelectListener listener, - ISelectListener neo_listener = null, - ISelectListener unix_listener = null ) + public this ( NodeItem node, ConnectionSetupParams conn_setup_params ) { this.node_item_ = node; @@ -211,19 +208,28 @@ public abstract class INodeBase : INode, INodeInfo conn_setup_params.error_dg = &this.error; - this.initListeners(listener, neo_listener, unix_listener); + this.listener = this.newListener(); + this.neo_listener = this.newNeoListener(); + this.unix_listener = this.newUnixSocketListener(); this.record_action_counters_ = new RecordActionCounters(this.record_action_counter_ids); } /// TODO - protected void initListeners ( lazy ISelectListener listener, - ISelectListener neo_listener = null, - ISelectListener unix_listener = null ) + protected abstract ISelectListener newListener ( ); + + /// TODO + protected abstract ISelectListener newNeoListener ( ); + + /// TODO + protected abstract ISelectListener newUnixSocketListener ( ); + + /// TODO + public void restartListeners ( ) { - this.listener = listener; - this.neo_listener = neo_listener; - this.unix_listener = unix_listener; + this.listener = this.newListener(); + this.neo_listener = this.newNeoListener(); + this.unix_listener = this.newUnixSocketListener(); } /************************************************************************** @@ -824,25 +830,8 @@ public class NodeBase ( ConnHandler : ISwarmConnectionHandler ) : INodeBase options.epoll, options.requests, no_delay, *credentials, this, &this.getResourceAcquirer); - // Set up unix listener socket, if specified. - UnixListener unix_listener; - if ( options.unix_socket_path.length ) - { - BasicCommandHandler.Handler[istring] unix_socket_handlers; - if ( this.credentials_file ) - { - unix_socket_handlers = - ["update-credentials"[]: &this.handleUpdateCredentials, - "list-credentials": &this.handleListCredentials]; - } - - unix_listener = new UnixListener( - options.unix_socket_path, options.epoll, unix_socket_handlers); - } - // Super ctor. - super(node, conn_setup_params, - this.newListener(), this.newNeoListener(), unix_listener); + super(node, conn_setup_params); // Set up stats tracking for all named requests specified. options.requests.initStats(this.neo_request_stats); @@ -856,17 +845,8 @@ public class NodeBase ( ConnHandler : ISwarmConnectionHandler ) : INodeBase this.neo_address_.port(this.neo_socket.port()); } - - /// TODO - public void restartListeners ( ) - { - this.newListener(); - this.newNeoListener(); - this.initListeners(this.listener, this.neo_listener, this.unix_listener); - } - /// TODO - private Listener newListener ( ) + protected override ISelectListener newListener ( ) { InetAddress!(false) addr; this.socket = new AddressIPSocket!(); @@ -876,7 +856,7 @@ public class NodeBase ( ConnHandler : ISwarmConnectionHandler ) : INodeBase } /// TODO - private NeoListener newNeoListener ( ) + protected override ISelectListener newNeoListener ( ) { InetAddress!(false) neo_addr; this.neo_socket = new AddressIPSocket!(); @@ -885,6 +865,24 @@ public class NodeBase ( ConnHandler : ISwarmConnectionHandler ) : INodeBase this.neo_conn_setup_params, this.backlog); } + /// TODO + protected override ISelectListener newUnixSocketListener ( ) + { + if ( !options.unix_socket_path.length ) + return null; + + BasicCommandHandler.Handler[istring] unix_socket_handlers; + if ( this.credentials_file ) + { + unix_socket_handlers = + ["update-credentials"[]: &this.handleUpdateCredentials, + "list-credentials": &this.handleListCredentials]; + } + + return this.unix_listener = new UnixListener( + options.unix_socket_path, options.epoll, unix_socket_handlers); + } + /************************************************************************** Returns: @@ -1040,15 +1038,14 @@ public class NodeBase ( ConnHandler : ISwarmConnectionHandler ) : INodeBase public this ( NodeItem node, ConnectionSetupParams conn_setup_params, int backlog ) { + this.node = node; + this.conn_setup_params = conn_setup_params; + this.backlog = backlog; + InetAddress!(false) addr; this.socket = new AddressIPSocket!(); - super(node, conn_setup_params, - this.listener = new Listener( - addr(node.Address, node.Port), this.socket, conn_setup_params, - backlog - ) - ); + super(node, conn_setup_params); enforce(this.socket.updateAddress() == 0, "socket.updateAddress() failed!"); }