629: def EventMachine::connect server, port, handler=nil, *args
630: klass = if (handler and handler.is_a?(Class))
631: handler
632: else
633: Class.new( Connection ) {handler and include handler}
634: end
635:
636: arity = klass.instance_method(:initialize).arity
637: expected = arity >= 0 ? arity : -(arity + 1)
638: if (arity >= 0 and args.size != expected) or (arity < 0 and args.size < expected)
639: raise ArgumentError, "wrong number of arguments for #{klass}#initialize (#{args.size} for #{expected})"
640: end
641:
642: s = connect_server server, port
643: c = klass.new s, *args
644: @conns[s] = c
645: block_given? and yield c
646: c
647: end