/** * @param ses Session. */ public void closeFromWorkerThread(GridNioSession ses) { assert ses instanceof GridSelectorNioSessionImpl : ses; GridSelectorNioSessionImpl ses0 = (GridSelectorNioSessionImpl)ses; ((AbstractNioClientWorker)ses0.worker()).close((GridSelectorNioSessionImpl)ses, null); }
/** * @param ses Session. * @param req Request. * @param sys System message flag. * @throws IgniteCheckedException If session was closed. */ private void send0(GridSelectorNioSessionImpl ses, SessionWriteRequest req, boolean sys) throws IgniteCheckedException { assert ses != null; assert req != null; int msgCnt = sys ? ses.offerSystemFuture(req) : ses.offerFuture(req); if (ses.closed()) { if (ses.removeFuture(req)) { IOException err = new IOException("Failed to send message (connection was closed): " + ses); req.onError(err); if (!(req instanceof GridNioFuture)) throw new IgniteCheckedException(err); } } else if (!ses.procWrite.get() && ses.procWrite.compareAndSet(false, true)) { AbstractNioClientWorker worker = (AbstractNioClientWorker)ses.worker(); if (worker != null) worker.offer((SessionChangeRequest)req); } if (msgQueueLsnr != null) msgQueueLsnr.apply(ses, msgCnt); }
/** * @param ses Session. */ public void closeFromWorkerThread(GridNioSession ses) { assert ses instanceof GridSelectorNioSessionImpl : ses; GridSelectorNioSessionImpl ses0 = (GridSelectorNioSessionImpl)ses; ((AbstractNioClientWorker)ses0.worker()).close((GridSelectorNioSessionImpl)ses, null); }
/** * @param ses Session. * @param req Request. * @param sys System message flag. * @throws IgniteCheckedException If session was closed. */ private void send0(GridSelectorNioSessionImpl ses, SessionWriteRequest req, boolean sys) throws IgniteCheckedException { assert ses != null; assert req != null; int msgCnt = sys ? ses.offerSystemFuture(req) : ses.offerFuture(req); if (ses.closed()) { if (ses.removeFuture(req)) { IOException err = new IOException("Failed to send message (connection was closed): " + ses); req.onError(err); if (!(req instanceof GridNioFuture)) throw new IgniteCheckedException(err); } } else if (!ses.procWrite.get() && ses.procWrite.compareAndSet(false, true)) { AbstractNioClientWorker worker = (AbstractNioClientWorker)ses.worker(); if (worker != null) worker.offer((SessionChangeRequest)req); } if (msgQueueLsnr != null) msgQueueLsnr.apply(ses, msgCnt); }