/** * @param ses Session. * @param msg Message. * @param createFut {@code True} if future should be created. * @param ackC Closure invoked when message ACK is received. * @return Future for operation. */ GridNioFuture<?> send(GridNioSession ses, ByteBuffer msg, boolean createFut, IgniteInClosure<IgniteException> ackC) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl : ses; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (createFut) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, ackC); send0(impl, fut, false); return fut; } else { SessionWriteRequest req = new WriteRequestImpl(ses, msg, true, ackC); send0(impl, req, false); return null; } }
/** * @param ses Session. * @param msg Message. * @param createFut {@code True} if future should be created. * @param ackC Closure invoked when message ACK is received. * @return Future for operation. */ GridNioFuture<?> send(GridNioSession ses, Message msg, boolean createFut, IgniteInClosure<IgniteException> ackC) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (createFut) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, skipRecoveryPred.apply(msg), ackC); send0(impl, fut, false); return fut; } else { SessionWriteRequest req = new WriteRequestImpl(ses, msg, skipRecoveryPred.apply(msg), ackC); send0(impl, req, false); return null; } }
/** * Adds message at the front of the queue without acquiring back pressure semaphore. * * @param ses Session. * @param msg Message. * @param lsnr Future listener notified from the session thread. * @throws IgniteCheckedException If session was closed. */ public void sendSystem(GridNioSession ses, Message msg, @Nullable IgniteInClosure<? super IgniteInternalFuture<?>> lsnr) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (lsnr != null) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, skipRecoveryPred.apply(msg), null); fut.listen(lsnr); assert !fut.isDone(); send0(impl, fut, true); } else { SessionWriteRequest req = new WriteRequestSystemImpl(ses, msg); send0(impl, req, true); } }
/** * @param ses Session. * @param msg Message. * @param createFut {@code True} if future should be created. * @param ackC Closure invoked when message ACK is received. * @return Future for operation. */ GridNioFuture<?> send(GridNioSession ses, ByteBuffer msg, boolean createFut, IgniteInClosure<IgniteException> ackC) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl : ses; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (createFut) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, ackC); send0(impl, fut, false); return fut; } else { SessionWriteRequest req = new WriteRequestImpl(ses, msg, true, ackC); send0(impl, req, false); return null; } }
/** * @param ses Session. * @param msg Message. * @param createFut {@code True} if future should be created. * @param ackC Closure invoked when message ACK is received. * @return Future for operation. */ GridNioFuture<?> send(GridNioSession ses, Message msg, boolean createFut, IgniteInClosure<IgniteException> ackC) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (createFut) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, skipRecoveryPred.apply(msg), ackC); send0(impl, fut, false); return fut; } else { SessionWriteRequest req = new WriteRequestImpl(ses, msg, skipRecoveryPred.apply(msg), ackC); send0(impl, req, false); return null; } }
/** * Adds message at the front of the queue without acquiring back pressure semaphore. * * @param ses Session. * @param msg Message. * @param lsnr Future listener notified from the session thread. * @throws IgniteCheckedException If session was closed. */ public void sendSystem(GridNioSession ses, Message msg, @Nullable IgniteInClosure<? super IgniteInternalFuture<?>> lsnr) throws IgniteCheckedException { assert ses instanceof GridSelectorNioSessionImpl; GridSelectorNioSessionImpl impl = (GridSelectorNioSessionImpl)ses; if (lsnr != null) { NioOperationFuture<?> fut = new NioOperationFuture<Void>(impl, NioOperation.REQUIRE_WRITE, msg, skipRecoveryPred.apply(msg), null); fut.listen(lsnr); assert !fut.isDone(); send0(impl, fut, true); } else { SessionWriteRequest req = new WriteRequestSystemImpl(ses, msg); send0(impl, req, true); } }