tmud-3.0.0/benchmark/
tmud-3.0.0/cmd/
tmud-3.0.0/cmd/objects/
tmud-3.0.0/cmd/tiny/
tmud-3.0.0/doc/SQLite/
tmud-3.0.0/doc/SQLite3/
tmud-3.0.0/doc/TernaryTrie/
tmud-3.0.0/farts/
tmud-3.0.0/lib/
tmud-3.0.0/lib/engine/
tmud-3.0.0/lib/farts/
tmud-3.0.0/logs/
#
# file::    connector.rb
# author::  Jon A. Lambert
# version:: 2.8.0
# date::    01/19/2006
#
# This source code copyright (C) 2005, 2006 by Jon A. Lambert
# All rights reserved.
#
# Released under the terms of the TeensyMUD Public License
# See LICENSE file for additional information.
#
$:.unshift "lib" if !$:.include? "lib"
$:.unshift "vendor" if !$:.include? "vendor"

require 'fcntl'

require 'network/session'
require 'network/connection'

# The Connector class handles outgoing connections
#
class Connector < Session
  logger 'DEBUG'

  # Create a new Connector object
  # [+server+]  The reactor this Connector is associated with.
  # [+address+] The address to connect to.
  # [+returns+] An Connector object
  def initialize(server, address)
    @address = address
    super(server)
  end

  # init is called before using the Connector
  # [+returns+] true is acceptor is properly initialized
  def init
    # Open a socket for the server to connect on.
    @sock = TCPSocket.new(@address , @server.port)
    @sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_REUSEADDR, true)
    @sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER, false)
    unless RUBY_PLATFORM =~ /win32/
      @sock.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
    end
    c = Connection.new(@server, @sock)
    if c.init
      log.info "(#{c.object_id}) Connection made."
      publish(c)
      true
    else
      false
    end
  rescue Exception
    log.error "Connector#init"
    log.error $!
    false
  end

  # handle_close is called when a close event occurs for this Connector.
  def handle_close
    @sock.close
  rescue Exception
    log.error "Connector#handle_close"
    log.error $!
  end

end