Sha256: b4e2f562856b43896aa00795f95a406addb793c4466b86175709d419ba0e3c58

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module Tribe
  module EM
    class TcpServer < Tribe::Actor
      private

      def initialize(ip, port, conn_class, options = {})
        super(options)

        @ip = ip
        @port = port
        @conn_class = conn_class

        start_listener
      end

      def process_event(event)
        case event.command
        when :start_listener
          start_listener_handler(event)
        when :stop_listener
          stop_listener_handler(event)
        end
      end

      def start_listener_handler(event)
        start_listener
      end

      def stop_listener_handler(event)
        stop_listener
      end

      def shutdown_handler(event)
        stop_server
      end

      def set_server_sig_handler(event)
        @server_sig = event.data
      end

      def start_listener
        return if @server_sig

        @server_sig = ::EM.start_server(@ip, @port, @conn_class)
      end

      def stop_listener
        return unless @server_sig

        ::EM.stop_server(@server_sig)
        @server_sig = nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tribe_em-0.0.1 lib/tribe_em/tcp_server.rb