Class: DeepConnect::Port
Constant Summary collapse
- PACK_n_SIZE =
[1].pack("n").size
- PACK_N_SIZE =
[1].pack("N").size
Instance Method Summary collapse
- #addr ⇒ Object
- #attach(session) ⇒ Object
- #close ⇒ Object
- #export(ev) ⇒ Object
- #export2(ev) ⇒ Object
- #import ⇒ Object
- #import2 ⇒ Object
-
#initialize(sock) ⇒ Port
constructor
A new instance of Port.
- #peeraddr ⇒ Object
-
#read(n) ⇒ Object
def export(ev) puts “EXPORT: #evev.inspect” if Conf.MESSAGE_DISPLAY s = Marshal.dump(ev.serialize) size = s.size packet = [size, s].pack(“Na#size”) write(packet) end.
- #shutdown_reading ⇒ Object
- #write(packet) ⇒ Object
Constructor Details
#initialize(sock) ⇒ Port
Returns a new instance of Port.
20 21 22 23 24 |
# File 'lib/deep-connect/port.rb', line 20 def initialize(sock) @io = sock @peeraddr = @io.peeraddr @session = nil end |
Instance Method Details
#addr ⇒ Object
34 35 36 |
# File 'lib/deep-connect/port.rb', line 34 def addr @io.addr end |
#attach(session) ⇒ Object
42 43 44 |
# File 'lib/deep-connect/port.rb', line 42 def attach(session) @session = session end |
#close ⇒ Object
26 27 28 |
# File 'lib/deep-connect/port.rb', line 26 def close @io.close end |
#export(ev) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/deep-connect/port.rb', line 94 def export(ev) puts "EXPORT: #{ev.inspect}" if Conf.MESSAGE_DISPLAY begin bin = Marshal.dump(ev.serialize) rescue puts "Exception Rised: #{$!}" puts $@ p ev.serialize raise end size = bin.size packet = [size].pack("N")+bin write(packet) puts "EXPORT: finsh" if Conf.MESSAGE_DISPLAY end |
#export2(ev) ⇒ Object
84 85 86 87 88 89 90 91 92 |
# File 'lib/deep-connect/port.rb', line 84 def export2(ev) puts "EXPORT: #{ev.inspect}" if Conf.MESSAGE_DISPLAY bin = Marshal.dump(ev.serialize, @io) # size = bin.size # packet = [size].pack("N")+bin # write(packet) puts "EXPORT: finsh" if Conf.MESSAGE_DISPLAY end |
#import ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/deep-connect/port.rb', line 62 def import # puts "IMPORT: start0" sz = read(PACK_N_SIZE).unpack("N").first bin = read(sz) begin a = Marshal.load(bin) rescue p bin p $!, $@ raise end begin # ここで, ネットワーク通信発生する可能性あり. ev = Event.materialize(@session, a.first, *a) rescue p $!, $@ raise end puts "IMPORT: #{ev.inspect}" if Conf.MESSAGE_DISPLAY ev end |
#import2 ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/deep-connect/port.rb', line 46 def import2 # puts "IMPORT: start0" # sz = read(PACK_N_SIZE).unpack("N").first # bin = read(sz) a = Marshal.load(@io) begin # ijijć, ōŃňů|ůČ??8Ĺī??-ĢĪ. ev = Event.materialize(@session, a.first, *a) rescue p $!, $@ raise end puts "IMPORT: #{ev.inspect}" if Conf.MESSAGE_DISPLAY ev end |
#peeraddr ⇒ Object
38 39 40 |
# File 'lib/deep-connect/port.rb', line 38 def peeraddr @peeraddr end |
#read(n) ⇒ Object
def export(ev)
puts "EXPORT: #{ev.inspect}" if Conf.MESSAGE_DISPLAY
s = Marshal.dump(ev.serialize)
size = s.size
packet = [size, s].pack("Na#{size}")
write(packet)
end
128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/deep-connect/port.rb', line 128 def read(n) begin packet = @io.read(n) fail EOFError, "socket closed" unless packet # DC::Raise ProtocolError unless packet.size == n packet rescue Errno::ECONNRESET, EOFError unless Conf.DISABLE_INFO puts "WARN: read中に[#{peeraddr.join(', ')}]の接続が切れました" end DC::Raise DisconnectClient, peeraddr end end |
#shutdown_reading ⇒ Object
30 31 32 |
# File 'lib/deep-connect/port.rb', line 30 def shutdown_reading @io.shutdown(Socket::SHUT_RD) end |
#write(packet) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/deep-connect/port.rb', line 142 def write(packet) begin @io.write(packet) # @io.flush rescue Errno::ECONNRESET unless Conf.DISABLE_INFO puts "WARN: write中に[#{peeraddr.join(', ')}]の接続が切れました" end DC::Raise DisconnectClient, peeraddr end end |