List of usage examples for org.apache.http.nio.reactor SessionOutputBuffer flush
int flush(WritableByteChannel channel) throws IOException;
From source file:com.ok2c.lightmtp.impl.protocol.ServiceShutdownCodec.java
@Override public void produceData(final IOSession iosession, final ServerState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); if (this.pendingReply != null) { this.writer.write(this.pendingReply, buf); this.pendingReply = null; }//from www. ja v a 2s . c om if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { this.completed = true; iosession.close(); } }
From source file:com.ok2c.lightmtp.impl.protocol.ServiceReadyCodec.java
@Override public void produceData(final IOSession iosession, final ServerState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); if (this.pendingReply != null) { this.writer.write(this.pendingReply, buf); this.pendingReply = null; }/*from w w w.j ava 2s . c o m*/ if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { this.completed = true; iosession.setEventMask(SelectionKey.OP_READ); } }
From source file:com.ok2c.lightmtp.impl.protocol.SendQuitCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); switch (this.codecState) { case QUIT_READY: SMTPCommand quit = new SMTPCommand("QUIT"); this.writer.write(quit, buf); this.codecState = CodecState.QUIT_RESPONSE_EXPECTED; break;/*from www .j a va 2 s. c o m*/ } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.SendRsetCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); switch (this.codecState) { case RSET_READY: SMTPCommand quit = new SMTPCommand("RSET"); this.writer.write(quit, buf); this.codecState = CodecState.RSET_RESPONSE_EXPECTED; break;/*from w ww . ja v a 2s . c o m*/ } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.SimpleSendHeloCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); switch (this.codecState) { case HELO_READY: SMTPCommand helo = new SMTPCommand("HELO", AddressUtils.resolveLocalDomain(iosession.getLocalAddress())); this.writer.write(helo, buf); this.codecState = CodecState.HELO_RESPONSE_EXPECTED; break;//from w w w .j a v a2 s . co m } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.SendLocalHeloCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); switch (this.codecState) { case LHLO_READY: String helo = heloName;//from ww w .j a v a 2s .c om if (helo == null) { helo = AddressUtils.resolveLocalDomain(iosession.getLocalAddress()); } SMTPCommand ehlo = new SMTPCommand("LHLO", helo); this.writer.write(ehlo, buf); this.codecState = CodecState.LHLO_RESPONSE_EXPECTED; break; } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.ReceiveDataCodec.java
@Override public void produceData(final IOSession iosession, final ServerState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); synchronized (sessionState) { if (this.pendingDelivery != null) { if (this.pendingDelivery.isDone()) { deliveryCompleted(sessionState); cleanUp();//w w w. j av a2 s .com } while (!this.pendingReplies.isEmpty()) { this.writer.write(this.pendingReplies.removeFirst(), buf); } } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { if (sessionState.getDataType() != null) { this.completed = true; sessionState.reset(); } iosession.clearEvent(SelectionKey.OP_WRITE); } } }
From source file:com.ok2c.lightmtp.impl.protocol.ExtendedSendHeloCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); String myHelo = heloName;// w w w . jav a 2 s. c om if (myHelo == null) { myHelo = AddressUtils.resolveLocalDomain(iosession.getLocalAddress()); } switch (this.codecState) { case EHLO_READY: SMTPCommand ehlo = new SMTPCommand("EHLO", myHelo); this.writer.write(ehlo, buf); this.codecState = CodecState.EHLO_RESPONSE_EXPECTED; break; case HELO_READY: SMTPCommand helo = new SMTPCommand("HELO", myHelo); this.writer.write(helo, buf); this.codecState = CodecState.HELO_RESPONSE_EXPECTED; break; } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.PipeliningSendEnvelopCodec.java
@Override public void produceData(final IOSession iosession, final ClientState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); if (sessionState.getRequest() == null) { if (sessionState.isTerminated()) { this.codecState = CodecState.COMPLETED; }/* www . ja v a 2 s. com*/ return; } SessionOutputBuffer buf = this.iobuffers.getOutbuf(); DeliveryRequest request = sessionState.getRequest(); switch (this.codecState) { case MAIL_REQUEST_READY: SMTPCommand mailFrom = new SMTPCommand("MAIL", "FROM:<" + request.getSender() + ">"); this.writer.write(mailFrom, buf); this.recipients.addAll(request.getRecipients()); for (String recipient : request.getRecipients()) { SMTPCommand rcptTo = new SMTPCommand("RCPT", "TO:<" + recipient + ">"); this.writer.write(rcptTo, buf); } SMTPCommand data = new SMTPCommand("DATA"); this.writer.write(data, buf); this.codecState = CodecState.MAIL_RESPONSE_EXPECTED; break; } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { iosession.clearEvent(SelectionKey.OP_WRITE); } }
From source file:com.ok2c.lightmtp.impl.protocol.PipeliningReceiveEnvelopCodec.java
@Override public void produceData(final IOSession iosession, final ServerState sessionState) throws IOException, SMTPProtocolException { Args.notNull(iosession, "IO session"); Args.notNull(sessionState, "Session state"); SessionOutputBuffer buf = this.iobuffers.getOutbuf(); synchronized (sessionState) { if (this.actionFuture != null) { SMTPReply reply = getReply(this.actionFuture); this.actionFuture = null; this.writer.write(reply, buf); }//from w w w . ja v a 2s . co m if (this.actionFuture == null) { while (!this.pendingActions.isEmpty()) { Action<ServerState> action = this.pendingActions.remove(); Future<SMTPReply> future = action.execute(sessionState, new OutputTrigger<SMTPReply>(sessionState, iosession)); if (future.isDone()) { SMTPReply reply = getReply(future); this.writer.write(reply, buf); } else { this.actionFuture = future; break; } } } if (buf.hasData()) { buf.flush(iosession.channel()); } if (!buf.hasData()) { if (sessionState.getDataType() != null) { this.completed = true; } if (sessionState.isTerminated()) { iosession.close(); } else { iosession.clearEvent(SelectionKey.OP_WRITE); } } } }