No, you should not have to create multiple instances. The necessary stateful data is saved to the Connection.
On Feb 1, 2024 at 5:22:36 AM, Kishore Mokkarala <[email protected]> wrote: > Any response would be greatly appreciated. > ------------------------------------------ > M.V.S.Kishore > 91-9886412814 > > > On Wed, 31 Jan 2024 at 22:17, Kishore Mokkarala <[email protected]> > wrote: > > Hi Emmanuel, > > > Do we need to create a new instance of SSLFilter per tcp ip connection or > > can we reuse it ? > > > For example, do we need to repeat the same code for each tcp ip connection > > ? > > > *Approach 1:* > > for(int i=0;i< 500;i++) > > { > > NioSocketConnector connector = new NioSocketConnector(); > > connector.getFilterChain().addLast("LoggingFilter", > > G10CaptureService.loggingFilter); > > connector.getFilterChain().addLast("codecFilter", > > G10CaptureService.probeCodecFilter); > > connector.getFilterChain().addLast("executorFilter", > > G10CaptureService.executorFilter); > > connector.getFilterChain().addLast("gpbMessageFilter", > > G10CaptureService.gpbMessageFilter); > > connector.getFilterChain().addLast("keepAliveFilter", > > G10CaptureService.keepAliveFilter); > > SslFilter sslFilter; > > try { > > SSLContext sslContext = TLSUtil.getSSLContext(); > > sslFilter = new CustomSslFilter(sslContext); > > connector.getFilterChain().addFirst("sslFilter", sslFilter); > > } catch (Exception e) { > > e.printStackTrace(); > > LOG.error("Exception during creating SSL context..." + > > XError.getStackTrace(e)); > > } > > //io handler creation > > StateMachine stateMachine = > > StateMachineFactory.getInstance(IoHandlerTransition.class).create( > > G10MinaClient.CONNECTED, new G10MinaClient(processor)); > > > IoHandler ioHandler = new > > StateMachineProxyBuilder().setStateContextLookup( > > new IoSessionStateContextLookup(new StateContextFactory() { > > @Override > > public StateContext create() { > > final G10StateContext stateContext = new > > G10StateContext(); > > stateContext.setStartedTime(new Date()); > > LOG.info("G10StateContext initialized at:{} > > ",System.currentTimeMillis()); > > return stateContext; > > } > > })).create(IoHandler.class, stateMachine); > > connector.setHandler(ioHandler); > > connector.connect(primaryAddress); > > connectFuture.awaitUninterruptibly(); > > if (connectFuture.isConnected()) { > > IoSession session = connectFuture.getSession(); > > // Do something with the session if needed > > } else { > > System.err.println("Connection failed for iteration: " + i); > > } > > } > > > *Approach 2:* > > Reuse the generic connector implemented above for opening all TCP/IP > > connections. > > //just do the below for getting connections for example > > NioSocketConnector connector = new NioSocketConnector(); > > //filter chain creation > > //add SSLFilter to filer chain > > > for(int i=0;i< 500;i++) > > { > > ConnectFuture connectFuture = connector.connect(serverAddress); > > connectFuture.awaitUninterruptibly(); > > if (connectFuture.isConnected()) { > > IoSession session = connectFuture.getSession(); > > // Do something with the session if needed > > } else { > > System.err.println("Connection failed for iteration: " + i); > > } > > } > > > Which approach is better ? > > > Regards, > > ------------------------------------------ > > M.V.S.Kishore > > 91-9886412814 > > >
