lib/alo7/net/client.rb in alo7-net-0.1.0 vs lib/alo7/net/client.rb in alo7-net-0.1.1
- old
+ new
@@ -21,25 +21,34 @@
# Connect to a given host/port and re-use the instance.
#
# @param host [String] host to connect to
# @param port [Integer] port to connect to
# @return [self]
+ #
+ # @raise if another {#reconnect} is under progress
def reconnect(host, port)
+ raise AnotherReconnectingUnderProgress.new 'another reconnecting is under progress' if impl.connect_defer
Net.reconnect self, host, port
self.class.await_connect self
end
+ # @private
+ class Impl < Connection::Impl
+ attr_accessor :connect_defer
+
+ def connection_completed
+ connect_defer, @connect_defer = @connect_defer, nil
+ connect_defer.succeed
+ super
+ end
+ end
+
class << self
# @private
def await_connect(connection)
defer = Defer.new
- connection.define_singleton_method :connection_completed do
- defer.succeed
- end
+ connection.impl.connect_defer = defer
Net.await defer
- connection.singleton_class.instance_eval do
- remove_method :connection_completed
- end
connection
end
end
end
end