@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { if (e.getMessage() instanceof TSOProto.Response) { fsm.sendEvent(new ResponseEvent((TSOProto.Response) e.getMessage())); } else { LOG.warn("Received unknown message", e.getMessage()); } }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { if (e.getMessage() instanceof TSOProto.Response) { fsm.sendEvent(new ResponseEvent((TSOProto.Response) e.getMessage())); } else { LOG.warn("Received unknown message", e.getMessage()); } }
@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { currentChannel = e.getChannel(); LOG.debug("HANDLER (CHANNEL CONNECTED): Connection {}. Sending connected event to FSM", e); fsm.sendEvent(new ConnectedEvent(e.getChannel())); }
@Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("HANDLER (CHANNEL CLOSED): Connection {}. Sending channel closed event to FSM", e); fsm.sendEvent(new ChannelClosedEvent(new ConnectionException())); }
/** * @see TSOProtocol#getNewStartTimestamp() */ @Override public TSOFuture<Long> getNewStartTimestamp() { TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.TimestampRequest.Builder tsreqBuilder = TSOProto.TimestampRequest.newBuilder(); builder.setTimestampRequest(tsreqBuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request); }
@Override public void run(Timeout timeout) { fsm.sendEvent(new HandshakeTimeoutEvent()); } }, 30, TimeUnit.SECONDS);
@Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } });
@Override public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("HANDLER (CHANNEL DISCONNECTED): Connection {}. Sending error event to FSM", e); fsm.sendEvent(new ErrorEvent(new ConnectionException())); }
@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) { currentChannel = e.getChannel(); LOG.debug("HANDLER (CHANNEL CONNECTED): Connection {}. Sending connected event to FSM", e); fsm.sendEvent(new ConnectedEvent(e.getChannel())); }
@Override public void run(Timeout timeout) { fsm.sendEvent(new ReconnectEvent()); } }, tsoReconnectionDelayInSecs, TimeUnit.SECONDS);
@Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("HANDLER (CHANNEL CLOSED): Connection {}. Sending channel closed event to FSM", e); fsm.sendEvent(new ChannelClosedEvent(new ConnectionException())); }
@Override public void operationComplete(ChannelFuture future) { if (!future.isSuccess()) { fsm.sendEvent(new ErrorEvent(future.getCause())); } } });
@Override public void run(Timeout timeout) { fsm.sendEvent(timeoutEvent); } }, requestTimeoutInMs, TimeUnit.MILLISECONDS);
@Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { LOG.error("Error on channel {}", ctx.getChannel(), e.getCause()); fsm.sendEvent(new ErrorEvent(e.getCause())); } }
@Override public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { LOG.debug("HANDLER (CHANNEL DISCONNECTED): Connection {}. Sending error event to FSM", e); fsm.sendEvent(new ErrorEvent(new ConnectionException())); }
@Override public void run(Timeout timeout) { fsm.sendEvent(new ReconnectEvent()); } }, tsoReconnectionDelayInSecs, TimeUnit.SECONDS);
/** * @see TSOProtocol#getNewStartTimestamp() */ @Override public TSOFuture<Long> getNewStartTimestamp() { TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.TimestampRequest.Builder tsreqBuilder = TSOProto.TimestampRequest.newBuilder(); builder.setTimestampRequest(tsreqBuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request); }
/** * @see TSOProtocol#getFence(long) */ @Override public TSOFuture<Long> getFence(long tableId) { TSOProto.Request.Builder builder = TSOProto.Request.newBuilder(); TSOProto.FenceRequest.Builder fenceReqBuilder = TSOProto.FenceRequest.newBuilder(); fenceReqBuilder.setTableId(tableId); builder.setFenceRequest(fenceReqBuilder.build()); RequestEvent request = new RequestEvent(builder.build(), requestMaxRetries); fsm.sendEvent(request); return new ForwardingTSOFuture<>(request); }
@Override public void run(Timeout timeout) { fsm.sendEvent(new HandshakeTimeoutEvent()); } }, 30, TimeUnit.SECONDS);
@Override public void run(Timeout timeout) { fsm.sendEvent(timeoutEvent); } }, requestTimeoutInMs, TimeUnit.MILLISECONDS);