private void registerInvocation(ClientInvocation clientInvocation) { short protocolVersion = client.getProtocolVersion(); final int correlationId = newCorrelationId(); clientInvocation.getClientMessage().setCorrelationId(correlationId).setVersion(protocolVersion); callIdMap.put(correlationId, clientInvocation); if (clientInvocation instanceof ClientListenerInvocation) { eventHandlerMap.put(correlationId, (ClientListenerInvocation) clientInvocation); } }
private boolean isAllowedToSendRequest(ClientConnection connection, ClientInvocation invocation) { if (!connection.isHeartBeating()) { if (invocation.shouldBypassHeartbeatCheck()) { // ping and removeAllListeners should be send even though heart is not beating return true; } if (logger.isFinestEnabled()) { logger.warning( "Connection is not heart-beating, won't write client message -> " + invocation.getClientMessage()); } return false; } return true; }
protected void send(ClientInvocation invocation, ClientConnection connection) throws IOException { if (isShutdown) { throw new HazelcastClientNotActiveException("Client is shut down"); } registerInvocation(invocation); ClientMessage clientMessage = invocation.getClientMessage(); if (!isAllowedToSendRequest(connection, invocation) || !writeToConnection(connection, clientMessage)) { final int callId = clientMessage.getCorrelationId(); deRegisterCallId(callId); deRegisterEventHandler(callId); throw new IOException("Packet not send to " + connection.getRemoteEndpoint()); } invocation.setSendConnection(connection); }
protected void send(ClientInvocation invocation, ClientConnection connection) throws IOException { if (isShutdown) { throw new HazelcastClientNotActiveException("Client is shut down"); } registerInvocation(invocation); ClientMessage clientMessage = invocation.getClientMessage(); if (!isAllowedToSendRequest(connection, invocation) || !writeToConnection(connection, clientMessage)) { final int callId = clientMessage.getCorrelationId(); ClientInvocation clientInvocation = deRegisterCallId(callId); deRegisterEventHandler(callId); if (clientInvocation != null) { throw new IOException("Packet not send to " + connection.getRemoteEndpoint()); } else { if (logger.isFinestEnabled()) { logger.finest("Invocation not found to deregister for call id " + callId); } } } invocation.setSendConnection(connection); }