Sha256: 33b3ffe6b6c1388aadc2ebada784f4c18b2cdbae94871258f321f8f4066223c0
Contents?: true
Size: 968 Bytes
Versions: 3
Compression:
Stored size: 968 Bytes
Contents
require 'socket' require 'thread' module NFS module SUNRPC class TCPServer < Server def initialize(programs, port = nil, host = '127.0.0.1') @server = ::TCPServer.new(host, port) @programs = hash_programs(programs) @thread = Thread.new do loop do Thread.new(@server.accept) do |socket| loop do frame = socket.recv(4).unpack1('N') len = frame & ~0x80000000 break unless len data = socket.recv(len) result = run_procedure(data) if !result.nil? result = [result.length | (128 << 24)].pack('N') + result socket.send(result, 0) end end end end end if block_given? begin yield(self) ensure shutdown end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nfs-rb-1.0.2 | lib/nfs/sunrpc/tcp_server.rb |
nfs-rb-1.0.1 | lib/nfs/sunrpc/tcp_server.rb |
nfs-rb-1.0.0 | lib/nfs/sunrpc/tcp_server.rb |