void EchoClientHandler::messageReceived(ChannelHandlerContext& ctx, const MessageEvent& e) { // Send back the received message to the remote peer. //transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes()); const ChannelBufferPtr& buffer = e.getMessage().value<ChannelBufferPtr>(); if (buffer) { int readableBytes = buffer->readableBytes(); ChannelBufferPtr tmp = buffer->readBytes(); Channel& channel = e.getChannel(); if (intervalTime == 0) { channel.write(tmp); } else { timer->newTimeout(boost::bind(&EchoClientHandler::delaySendMessage, this, _1, boost::ref(channel), tmp), intervalTime); } printf("received message from %d at %s.\n", channel.getId().intValue(), boost::posix_time::to_simple_string(boost::get_system_time()).c_str()); } }
AsioWriteRequest::AsioWriteRequest(const MessageEvent& evt) { const ChannelMessage& message = evt.getMessage(); if (message.isChannelBuffer()) { const ChannelBufferPtr& channelBuffer = message.value<ChannelBufferPtr>(); if (channelBuffer->hasArray()) { Array array; channelBuffer->readSlice(array); writeBufferSize = array.length(); buffer = asio_buffer(array.data(), writeBufferSize); gathring.buffers.truncatedIndex = 0; } else { channelBuffer->readSlice(gathring); writeBufferSize = gathring.bytesCount(); if (gathring.buffers.truncatedIndex == 1) { buffer = gathring.buffers[0]; gathring.buffers.truncatedIndex = 0; } } } }
void AbstractCodecEmbedder::EmbeddedChannelSink::handleMessageEvent(const MessageEvent& e) { productQueue.push_front(e.getMessage()); }