/** * 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); } }
/** * 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); } }