Class: P2p2::P1
- Inherits:
-
Object
- Object
- P2p2::P1
- Defined in:
- lib/p2p2/p1.rb
Instance Method Summary collapse
-
#initialize(config_path = nil) ⇒ P1
constructor
A new instance of P1.
Constructor Details
#initialize(config_path = nil) ⇒ P1
Returns a new instance of P1.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/p2p2/p1.rb', line 14 def initialize( config_path = nil ) unless config_path config_path = File.( '../p2p2.conf.json', __FILE__ ) end unless File.exist?( config_path ) raise "missing config file #{ config_path }" end conf = JSON.parse( IO.binread( config_path ), symbolize_names: true ) p2pd_host = conf[ :p2pd_host ] p2pd_port = conf[ :p2pd_port ] room = conf[ :room ] appd_host = conf[ :appd_host ] appd_port = conf[ :appd_port ] p1_tmp_dir = conf[ :p1_tmp_dir ] unless p2pd_host raise "missing p2pd host" end unless room raise "missing room" end unless p2pd_port p2pd_port = 2020 end unless appd_host appd_host = '127.0.0.1' end unless appd_port appd_port = 22 end unless p1_tmp_dir p1_tmp_dir = '/tmp/p2p2.p1' end unless File.exist?( p1_tmp_dir ) Dir.mkdir( p1_tmp_dir ) end dst_chunk_dir = File.join( p1_tmp_dir, 'dst.chunk' ) unless Dir.exist?( dst_chunk_dir ) Dir.mkdir( dst_chunk_dir ) end tund_chunk_dir = File.join( p1_tmp_dir, 'tund.chunk' ) unless Dir.exist?( tund_chunk_dir ) Dir.mkdir( tund_chunk_dir ) end title = "p2p2 p1 #{ P2p2::VERSION }" puts title puts "p2pd host #{ p2pd_host }" puts "p2pd port #{ p2pd_port }" puts "room #{ room }" puts "appd host #{ appd_host }" puts "appd port #{ appd_port }" puts "p1 tmp dir #{ p1_tmp_dir }" puts "dst chunk dir #{ dst_chunk_dir }" puts "tund chunk dir #{ tund_chunk_dir }" if RUBY_PLATFORM.include?( 'linux' ) $0 = title pid = fork do $0 = 'p2p2 p1 worker' worker = P2p2::P1Worker.new( p2pd_host, p2pd_port, room, appd_host, appd_port, dst_chunk_dir, tund_chunk_dir ) Signal.trap( :TERM ) do puts 'exit' worker.quit! end worker.looping end Signal.trap( :TERM ) do puts 'trap TERM' begin Process.kill( :TERM, pid ) rescue Errno::ESRCH => e puts e.class end end Process.waitall else P2p2::P1Worker.new( p2pd_host, p2pd_port, room, appd_host, appd_port, dst_chunk_dir, tund_chunk_dir ).looping end end |