Class: Server::MessageHandler

Inherits:
SimpleChannelInboundHandler
  • Object
show all
Includes:
ChannelFutureListener, ChannelHandler
Defined in:
lib/server/message_handler.rb

Overview

The MessageHandler class

Instance Method Summary collapse

Constructor Details

#initialize(&handler) ⇒ MessageHandler

Returns a new instance of MessageHandler.



27
28
29
30
# File 'lib/server/message_handler.rb', line 27

def initialize(&handler)
  super()
  @handler = handler
end

Instance Method Details

#channelRead0(ctx, msg) ⇒ Object

Please keep in mind that this method will be renamed to messageReceived(ChannelHandlerContext, I) in 5.0.

java_signature ‘protected abstract void channelRead0(ChannelHandlerContext ctx, I msg) throws Exception’



36
37
38
39
# File 'lib/server/message_handler.rb', line 36

def channelRead0(ctx, msg)
  log.trace "##{__method__} channel: #{ctx.channel}, message: #{msg.inspect}"
  messageReceived(ctx, msg)
end

#handle_message(ctx, message) ⇒ Object



49
50
51
52
53
54
# File 'lib/server/message_handler.rb', line 49

def handle_message(ctx, message)
  request = message.to_s.strip
  response = @handler.call(ctx.channel, request).to_s.chomp
  log.debug "##{__method__} response: #{response}"
  ctx.channel.writeAndFlush("#{response}\n")
end

#messageReceived(ctx, msg) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/server/message_handler.rb', line 41

def messageReceived(ctx, msg)
  log.trace "##{__method__} channel: #{ctx.channel}, message: #{msg.inspect}"
  msg&.chomp!
  log.info "Received message: #{msg}"
  return super(ctx, msg) unless respond_to?(:handle_message) && @handler&.arity == 2
  handle_message(ctx, msg)
end