Class: P2p2::P2
- Inherits:
-
Object
- Object
- P2p2::P2
- Defined in:
- lib/p2p2/p2.rb
Instance Method Summary collapse
-
#initialize(config_path = nil) ⇒ P2
constructor
A new instance of P2.
Constructor Details
#initialize(config_path = nil) ⇒ P2
Returns a new instance of P2.
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/p2.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 ] sdwd_host = conf[ :sdwd_host ] sdwd_port = conf[ :sdwd_port ] p2_tmp_dir = conf[ :p2_tmp_dir ] unless p2pd_host raise "missing p2pd host" end unless room raise "missing room" end unless p2pd_port p2pd_port = 2020 end unless sdwd_host sdwd_host = '0.0.0.0' end unless sdwd_port sdwd_port = 2222 end unless p2_tmp_dir p2_tmp_dir = '/tmp/p2p2.p2' end unless File.exist?( p2_tmp_dir ) Dir.mkdir( p2_tmp_dir ) end src_chunk_dir = File.join( p2_tmp_dir, 'src.chunk' ) unless Dir.exist?( src_chunk_dir ) Dir.mkdir( src_chunk_dir ) end tun_chunk_dir = File.join( p2_tmp_dir, 'tun.chunk' ) unless Dir.exist?( tun_chunk_dir ) Dir.mkdir( tun_chunk_dir ) end title = "p2p2 p2 #{ P2p2::VERSION }" puts title puts "p2pd host #{ p2pd_host }" puts "p2pd port #{ p2pd_port }" puts "room #{ room }" puts "sdwd host #{ sdwd_host }" puts "sdwd port #{ sdwd_port }" puts "p2 tmp dir #{ p2_tmp_dir }" puts "src chunk dir #{ src_chunk_dir }" puts "tun chunk dir #{ tun_chunk_dir }" if RUBY_PLATFORM.include?( 'linux' ) $0 = title pid = fork do $0 = 'p2p2 p2 worker' worker = P2p2::P2Worker.new( p2pd_host, p2pd_port, room, sdwd_host, sdwd_port, src_chunk_dir, tun_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::P2Worker.new( p2pd_host, p2pd_port, room, sdwd_host, sdwd_port, src_chunk_dir, tun_chunk_dir ).looping end end |