lib/dcell/server.rb in dcell-0.12.0.pre vs lib/dcell/server.rb in dcell-0.13.0.pre

- old
+ new

@@ -1,10 +1,12 @@ module DCell # Servers handle incoming 0MQ traffic class Server include Celluloid::ZMQ + finalizer :close + # Bind to the given 0MQ address (in URL form ala tcp://host:port) def initialize # The gossip protocol is dependent on the node manager link Celluloid::Actor[:node_manager] @@ -16,35 +18,34 @@ rescue IOError @socket.close raise end - run! + async.run end # Wait for incoming 0MQ messages def run - while true; handle_message! @socket.read; end + while true; async.handle_message @socket.read; end end - # Shut down the server - def finalize + def close @socket.close if @socket end # Handle incoming messages def handle_message(message) begin message = decode_message message rescue InvalidMessageError => ex - Celluloid::Logger.warn("couldn't decode message: #{ex.class}: #{ex}") + Logger.crash("couldn't decode message", ex) return end begin message.dispatch rescue => ex - Celluloid::Logger.crash("DCell::Server: message dispatch failed", ex) + Logger.crash("DCell::Server: message dispatch failed", ex) end end class InvalidMessageError < StandardError; end # undecodable message