Sha256: 73a92bece8f8bc439f092999505ab12e4af1aad8ba0b50da5e21af2b50d5809b

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

require 'miu'
require 'miu/publisher'
require 'miu/subscriber'

module Miu
  class Server
    attr_reader :options
    attr_reader :context, :publisher, :subscriber

    def initialize(options = {})
      @options = options
    end

    def run
      pub_address = "#{@options[:pub_host]}:#{@options[:pub_port]}"
      sub_address = "#{@options[:sub_host]}:#{@options[:sub_port]}"

      @context = ZMQ::Context.new
      @publisher = Publisher.new({
        :context => @context,
        :host => @options[:pub_host],
        :port => @options[:pub_port]
      })
      @subscriber = Subscriber.new({
        :context => @context,
        :host => @options[:sub_host],
        :port => @options[:sub_port]
      })

      @publisher.bind
      @subscriber.bind

      puts "Starting miu"
      puts "pub: #{@publisher.host}:#{@publisher.port}"
      puts "sub: #{@subscriber.host}:#{@subscriber.port}"

      trap(:INT) do
        puts "Quit"
        close
        exit
      end

      loop do
        @subscriber.forward @publisher
      end
    end

    def close
      @subscriber.close
      @publisher.close
      @context.terminate
    end
    alias_method :shutdown, :close
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
miu-0.0.6 lib/miu/server.rb
miu-0.0.5 lib/miu/server.rb