Class: DeepConnect::Accepter

Inherits:
Object
  • Object
show all
Defined in:
lib/deep-connect/accepter.rb

Instance Method Summary collapse

Constructor Details

#initialize(org) ⇒ Accepter

Returns a new instance of Accepter.



16
17
18
19
# File 'lib/deep-connect/accepter.rb', line 16

def initialize(org)
  @organizer = org
  @probe = nil
end

Instance Method Details

#open(service = 0) ⇒ Object



25
26
27
# File 'lib/deep-connect/accepter.rb', line 25

def open(service = 0)
  @probe = TCPServer.open("", service)
end

#port_numberObject



21
22
23
# File 'lib/deep-connect/accepter.rb', line 21

def port_number
  @probe.addr[1]
end

#startObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/deep-connect/accepter.rb', line 29

def start
  @probe_thread = Thread.start {
	loop do
	  sock = @probe.accept
	  Thread.start do
 port = Port.new(sock)
 begin
   unless (ev = port.import).kind_of?(Event::InitSessionEvent)
		puts "WARN: 接続初期化エラー: [#{port.peeraddr}]"
   end
   begin
		@organizer.connect_deep_space_with_port port, ev.local_id
   rescue ConnectCancel
		puts "INFO: クライアント(#{ev.local_id}からの接続を拒否しました."
   rescue ConnectionRefused
		puts "WARN: クライアント(#{ev.local_id}への接続が拒否されました"
   rescue ProtocolError, IOError
		puts "WARN: 接続初期化エラー: [#{port.peeraddr}]"

   end
 rescue EOFError
   puts "WARN: 接続初期化中に[#{port.peeraddr}]との接続が切れました"
 end
	  end
	end
  }
end

#stopObject



57
58
59
60
# File 'lib/deep-connect/accepter.rb', line 57

def stop
  @probe_thread.exit
  @probe.close
end