protected void handleStateReq(Address requester) { if(spawner == null || !spawner.isRunning()) spawner=createAcceptor(); super.handleStateReq(requester); }
protected StateProviderAcceptor createAcceptor() { StateProviderAcceptor retval=new StateProviderAcceptor(thread_pool, Util.createServerSocket(getSocketFactory(), "jgroups.streaming_state_transfer.srv_sock", bind_addr, bind_port)); Thread t=getThreadFactory().newThread(retval, "STATE server socket acceptor"); t.start(); return retval; }
protected void process(Socket socket) { OutputStream output=null; try { socket.setSendBufferSize(buffer_size); if(log.isDebugEnabled()) log.debug(local_addr + ": accepted request for state transfer from " + socket.getInetAddress() + ":" + socket.getPort()); DataInput in=new DataInputStream(socket.getInputStream()); Address stateRequester=Util.readAddress(in); output=new BufferedOutputStream(socket.getOutputStream(), buffer_size); getStateFromApplication(stateRequester, output, false); } catch(Throwable e) { if(log.isWarnEnabled()) log.warn(local_addr + ": failed handling request from requester", e); } // getStateFromApplication() is run in the same thread; it closes the output stream, and we close the socket finally { Util.close(socket); } }
public void stop() { running=false; try { getSocketFactory().close(serverSocket); } catch(Exception ignored) { } } }
protected void handleViewChange(View v) { super.handleViewChange(v); if(state_provider != null && !v.getMembers().contains(state_provider)) { openBarrierAndResumeStable(); Exception ex=new EOFException("state provider " + state_provider + " left"); up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM_CLOSED, new StateTransferResult(ex))); } }
protected Tuple<InputStream,Object> createStreamToProvider(Address provider, StateHeader hdr) throws Exception { IpAddress address=hdr.bind_addr; Socket socket=null; try { socket=getSocketFactory().createSocket("jgroups.state_sock.sock"); socket.bind(new InetSocketAddress(bind_addr, 0)); socket.setReceiveBufferSize(buffer_size); Util.connect(socket, new InetSocketAddress(address.getIpAddress(), address.getPort()), 0); log.debug("%s: connected to state provider %s:%d", local_addr, address.getIpAddress(), address.getPort()); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); Util.writeAddress(local_addr, out); return new Tuple<>(new BufferedInputStream(socket.getInputStream(), buffer_size), socket); } catch(Throwable t) { Util.close(socket); if(t instanceof Exception) throw (Exception)t; throw new Exception("failed creating socket", t); } }
protected void handleViewChange(View v) { super.handleViewChange(v); if(state_provider != null && !v.getMembers().contains(state_provider)) { openBarrierAndResumeStable(); Exception ex=new EOFException("state provider " + state_provider + " left"); up_prot.up(new Event(Event.STATE_TRANSFER_INPUTSTREAM_CLOSED, new StateTransferResult(ex))); } }
protected StateProviderAcceptor createAcceptor() { StateProviderAcceptor retval=new StateProviderAcceptor(thread_pool, Util.createServerSocket(getSocketFactory(), "jgroups.streaming_state_transfer.srv_sock", bind_addr, bind_port)); Thread t=getThreadFactory().newThread(retval, "STATE server socket acceptor"); t.start(); return retval; }
public void stop() { running=false; try { getSocketFactory().close(serverSocket); } catch(Exception ignored) { } } }
protected void handleStateReq(Address requester) { if(spawner == null || !spawner.isRunning()) spawner=createAcceptor(); super.handleStateReq(requester); }
protected void process(Socket socket) { OutputStream output=null; try { socket.setSendBufferSize(buffer_size); if(log.isDebugEnabled()) log.debug(local_addr + ": accepted request for state transfer from " + socket.getInetAddress() + ":" + socket.getPort()); DataInput in=new DataInputStream(socket.getInputStream()); Address stateRequester=Util.readAddress(in); output=new BufferedOutputStream(socket.getOutputStream(), buffer_size); getStateFromApplication(stateRequester, output, false); } catch(Throwable e) { if(log.isWarnEnabled()) log.warn(local_addr + ": failed handling request from requester", e); } // getStateFromApplication() is run in the same thread; it closes the output stream, and we close the socket finally { Util.close(socket); } }
protected Tuple<InputStream,Object> createStreamToProvider(Address provider, StateHeader hdr) throws Exception { IpAddress address=hdr.bind_addr; Socket socket=null; try { socket=getSocketFactory().createSocket("jgroups.state_sock.sock"); socket.bind(new InetSocketAddress(bind_addr, 0)); socket.setReceiveBufferSize(buffer_size); Util.connect(socket, new InetSocketAddress(address.getIpAddress(), address.getPort()), 0); log.debug("%s: connected to state provider %s:%d", local_addr, address.getIpAddress(), address.getPort()); DataOutputStream out=new DataOutputStream(socket.getOutputStream()); Util.writeAddress(local_addr, out); return new Tuple<>(new BufferedInputStream(socket.getInputStream(), buffer_size), socket); } catch(Throwable t) { Util.close(socket); if(t instanceof Exception) throw (Exception)t; throw new Exception("failed creating socket", t); } }