示例#1
0
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());
    }
}
示例#2
0
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;
            }
        }
    }
}
示例#3
0
void AbstractCodecEmbedder::EmbeddedChannelSink::handleMessageEvent(const MessageEvent& e) {
    productQueue.push_front(e.getMessage());
}