class Thrift::MultiplexedProcessor

Public Class Methods

new() click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 5
def initialize
  @actual_processors = {}
end

Public Instance Methods

process(iprot, oprot) click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 13
def process(iprot, oprot)
  name, type, seqid = iprot.read_message_begin
  check_type(type)
  check_separator(name)
  service_name, method = name.split(':')
  processor(service_name).process(StoredMessageProtocol.new(iprot, [method, type, seqid]), oprot)
end
register_processor(service_name, processor) click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 9
def register_processor(service_name, processor)
  @actual_processors[service_name] = processor
end

Protected Instance Methods

check_separator(name) click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 37
def check_separator(name)
  if name.count(':') < 1
    raise Thrift::Exception.new("Service name not found in message name: #{name}. Did you forget to use a Thrift::Protocol::MultiplexedProtocol in your client?")
  end
end
check_type(type) click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 31
def check_type(type)
  unless [MessageTypes::CALL, MessageTypes::ONEWAY].include?(type)
    raise Thrift::Exception.new('This should not have happened!?')
  end
end
processor(service_name) click to toggle source
# File lib/thrift/multiplexed_processor.rb, line 23
def processor(service_name)
  if @actual_processors.has_key?(service_name)
    @actual_processors[service_name]
  else
    raise Thrift::Exception.new("Service name not found: #{service_name}. Did you forget to call #{self.class.name}#register_processor?")
  end
end