ji2p 0.0.3-jruby-java-universal-java-9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/bin/bundle +15 -0
  3. data/bin/ctxirb +119 -0
  4. data/bin/simple_http_server +20 -0
  5. data/bin/simple_outproxy +96 -0
  6. data/lib/actor_system/actor.rb +10 -0
  7. data/lib/actor_system/concurrent/processor.rb +21 -0
  8. data/lib/actor_system/concurrent/worker.rb +13 -0
  9. data/lib/actor_system/core/minimal.rb +84 -0
  10. data/lib/actor_system/core/observable_implementation.rb +58 -0
  11. data/lib/actor_system/core/props.rb +45 -0
  12. data/lib/actor_system/dispatcher.rb +12 -0
  13. data/lib/actor_system/mailbox.rb +7 -0
  14. data/lib/actor_system/message.rb +60 -0
  15. data/lib/core_ext.rb +41 -0
  16. data/lib/gen_server.rb +57 -0
  17. data/lib/ji2p.rb +37 -0
  18. data/lib/ji2p/bundler.rb +165 -0
  19. data/lib/ji2p/cluster.rb +6 -0
  20. data/lib/ji2p/cluster/etcd.rb +5 -0
  21. data/lib/ji2p/cluster/etcd/version3.rb +6 -0
  22. data/lib/ji2p/cluster/kubernetes.rb +5 -0
  23. data/lib/ji2p/cluster/kubernetes/kube_api.rb +6 -0
  24. data/lib/ji2p/concurrent.rb +24 -0
  25. data/lib/ji2p/concurrent_executor.rb +56 -0
  26. data/lib/ji2p/config.rb +15 -0
  27. data/lib/ji2p/control.rb +15 -0
  28. data/lib/ji2p/control/client_manager.rb +14 -0
  29. data/lib/ji2p/control/dest.rb +34 -0
  30. data/lib/ji2p/control/keypair.rb +176 -0
  31. data/lib/ji2p/control/server.rb +80 -0
  32. data/lib/ji2p/control/socket_manager.rb +77 -0
  33. data/lib/ji2p/control/tunnel_manager.rb +62 -0
  34. data/lib/ji2p/environment.rb +35 -0
  35. data/lib/ji2p/package/gem_installer.rb +91 -0
  36. data/lib/ji2p/package/gemfile.rb +234 -0
  37. data/lib/ji2p/package/jar_dependencies.rb +23 -0
  38. data/lib/ji2p/package/proxy_support.rb +50 -0
  39. data/lib/ji2p/rspec.rb +16 -0
  40. data/lib/ji2p/server.rb +10 -0
  41. data/lib/ji2p/server/api.rb +14 -0
  42. data/lib/ji2p/server/database.rb +66 -0
  43. data/lib/ji2p/server/http.rb +69 -0
  44. data/lib/ji2p/server/http_server.rb +37 -0
  45. data/lib/ji2p/server/initializer.rb +4 -0
  46. data/lib/ji2p/server/launcher.rb +40 -0
  47. data/lib/ji2p/server/models.rb +9 -0
  48. data/lib/ji2p/server/models/base_record.rb +7 -0
  49. data/lib/ji2p/server/models/keypair.rb +32 -0
  50. data/lib/ji2p/server/models/tunnel.rb +4 -0
  51. data/lib/ji2p/startup.rb +12 -0
  52. data/lib/ji2p/startup/bootstrap.rb +60 -0
  53. data/lib/ji2p/startup/client_application.rb +20 -0
  54. data/lib/ji2p/startup/router_manager.rb +21 -0
  55. data/lib/ji2p/startup/sinatra_app.rb +61 -0
  56. data/lib/ji2p/startup/worker.rb +63 -0
  57. data/lib/ji2p/utils/blocking_queue.rb +32 -0
  58. data/lib/ji2p/utils/byte_value.rb +61 -0
  59. data/lib/ji2p/version.rb +3 -0
  60. data/lib/ji2p_jars.rb +16 -0
  61. data/lib/maybe.rb +148 -0
  62. data/lib/net/i2p/client/mstreaming/0.9.43/mstreaming-0.9.43.jar +0 -0
  63. data/lib/net/i2p/client/streaming/0.9.43/streaming-0.9.43.jar +0 -0
  64. data/lib/net/i2p/i2p/0.9.43/i2p-0.9.43.jar +0 -0
  65. data/lib/net/i2p/router/0.9.43/router-0.9.43.jar +0 -0
  66. metadata +392 -0
@@ -0,0 +1,20 @@
1
+ require 'fileutils'
2
+
3
+ module Ji2p
4
+ module Startup
5
+ class ClientApplication
6
+ java_import 'net.i2p.I2PAppContext'
7
+
8
+ def initialize name
9
+ @name = name
10
+ @ctx = Java::NetI2p::I2PAppContext.getGlobalContext
11
+ FileUtils.mkdir_p plugin_path unless File.exists? plugin_path
12
+ end
13
+
14
+ def plugin_path
15
+ @proot_path ||= File.expand_path("plugins/#{@name}", @ctx.getAppDir.getAbsolutePath)
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'java'
2
+
3
+ module Ji2p::Startup
4
+ class RouterManager
5
+ @@router = nil
6
+ include_package 'net.i2p.router'
7
+
8
+ def self.start_router!
9
+ @@router = RouterLaunch.main ARGV if @@router.nil?
10
+ end
11
+
12
+ def self.router_context
13
+ RouterContext.getCurrentContext
14
+ end
15
+
16
+ def self.get_leases
17
+ ctx = RouterManager.router_context
18
+ ctx.netDb.get_leases.to_a
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,61 @@
1
+ require 'sinatra'
2
+ require 'sinatra/base'
3
+ #require 'sinatra/config_file'
4
+ require 'sinatra/contrib'
5
+ require 'sinatra/cookies'
6
+ require 'sinatra/json'
7
+ require 'sinatra/namespace'
8
+ require 'sinatra/reloader'
9
+ #require 'sinatra/webdav'
10
+ require 'better_errors'
11
+ require 'binding_of_caller'
12
+
13
+ module Ji2p
14
+ module Startup
15
+ class SinatraApp < Sinatra::Base
16
+ APP_ROOT = File.expand_path('../..', __dir__) unless defined? APP_ROOT
17
+
18
+ use Rack::Session::Cookie, :key => 'rack.session',
19
+ :domain => 'localhost',
20
+ :path => '/',
21
+ :expire_after => 2592000, # In seconds
22
+ :secret => 'kake'
23
+
24
+ set :environments, %w{development test production staging}
25
+ enable :sessions, :logging
26
+ set :sessions, true
27
+ set :logging, true
28
+ set :server, %w[puma webrick]
29
+ set :app_file, __FILE__
30
+ set :public_folder, Proc.new { File.join(APP_ROOT, 'public') }
31
+ set :protection, :session => true
32
+ unless ENV['APP_ENV'].nil?
33
+ set :environment, ENV['APP_ENV']
34
+ else
35
+ set :environment, :development
36
+ end
37
+
38
+
39
+ configure :development do
40
+ register Sinatra::Reloader
41
+
42
+ use BetterErrors::Middleware
43
+ BetterErrors.application_root = APP_ROOT
44
+
45
+ set :reload_stuff, true
46
+ end
47
+
48
+ register Sinatra::Namespace
49
+ #register Sinatra::ConfigFile
50
+
51
+ helpers Sinatra::Cookies
52
+
53
+ set :show_exceptions, false
54
+
55
+ get '/' do
56
+ json :sinatra => { :status => 'OK', :request => request.env.to_json }
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,63 @@
1
+ module Ji2p
2
+ module Startup
3
+ class Worker
4
+ def self.start(num_threads:, queue_size:)
5
+ queue = SizedQueue.new(queue_size)
6
+ worker = new(num_threads: num_threads, queue: queue)
7
+ worker.spawn_threads
8
+ worker
9
+ end
10
+
11
+ def initialize(num_threads:, queue:)
12
+ @num_threads = num_threads
13
+ @queue = queue
14
+ @threads = []
15
+ end
16
+
17
+ attr_reader :num_threads, :threads
18
+ private :threads
19
+
20
+ def spawn_threads
21
+ num_threads.times do
22
+ threads << Thread.new do
23
+ while running? || actions?
24
+ action_proc, action_payload = wait_for_action
25
+ action_proc.call(action_payload) if action_proc
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+ def enqueue(action, payload)
32
+ queue.push([action, payload])
33
+ end
34
+
35
+ def stop
36
+ queue.close
37
+ threads.each(&:exit)
38
+ threads.clear
39
+ true
40
+ end
41
+
42
+ private
43
+
44
+ attr_reader :queue, :threads
45
+
46
+ def actions?
47
+ !queue.empty?
48
+ end
49
+
50
+ def running?
51
+ !queue.closed?
52
+ end
53
+
54
+ def dequeue_action
55
+ queue.pop(true)
56
+ end
57
+
58
+ def wait_for_action
59
+ queue.pop(false)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,32 @@
1
+ require 'thread'
2
+
3
+ module Ji2p
4
+ module Utils
5
+ class BlockingQueue
6
+ attr_reader :queue, :mutex, :cv
7
+
8
+ def initialize
9
+ @queue = Array.new
10
+ @mutex = Mutex.new
11
+ @cv = ConditionVariable.new
12
+ end
13
+
14
+ def push(ele)
15
+ @mutex.synchronize do
16
+ @queue.push ele
17
+ @cv.signal
18
+ end
19
+ end
20
+
21
+ def pop
22
+ @mutex.synchronize do
23
+ while @queue.empty?
24
+ @cv.wait(@mutex)
25
+ end
26
+
27
+ @queue.pop
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,61 @@
1
+ module Ji2p
2
+ module Utils
3
+ module ByteValue
4
+ module_function
5
+
6
+ B = 1
7
+ KB = B << 10
8
+ MB = B << 20
9
+ GB = B << 30
10
+ TB = B << 40
11
+ PB = B << 50
12
+
13
+ def parse(text)
14
+ if !text.is_a?(String)
15
+ raise ArgumentError, "ByteValue::parse takes a String, got a `#{text.class.name}`"
16
+ end
17
+ number = text.to_f
18
+ factor = multiplier(text)
19
+
20
+ (number * factor).to_i
21
+ end
22
+
23
+ def multiplier(text)
24
+ case text
25
+ when /(?:k|kb)$/
26
+ KB
27
+ when /(?:m|mb)$/
28
+ MB
29
+ when /(?:g|gb)$/
30
+ GB
31
+ when /(?:t|tb)$/
32
+ TB
33
+ when /(?:p|pb)$/
34
+ PB
35
+ when /(?:b)$/
36
+ B
37
+ else
38
+ raise ArgumentError, "Unknown bytes value '#{text}'"
39
+ end
40
+ end
41
+
42
+ def human_readable(number)
43
+ value, unit = if number > PB
44
+ [number / PB, "pb"]
45
+ elsif number > TB
46
+ [number / TB, "tb"]
47
+ elsif number > GB
48
+ [number / GB, "gb"]
49
+ elsif number > MB
50
+ [number / MB, "mb"]
51
+ elsif number > KB
52
+ [number / KB, "kb"]
53
+ else
54
+ [number, "b"]
55
+ end
56
+
57
+ format("%.2d%s", value, unit)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,3 @@
1
+ module Ji2p
2
+ VERSION = '0.0.3'.freeze unless defined? VERSION
3
+ end
data/lib/ji2p_jars.rb ADDED
@@ -0,0 +1,16 @@
1
+ # this is a generated file, to avoid over-writing it just delete this comment
2
+ begin
3
+ require 'jar_dependencies'
4
+ rescue LoadError
5
+ require 'net/i2p/router/0.9.43/router-0.9.43.jar'
6
+ require 'net/i2p/client/mstreaming/0.9.43/mstreaming-0.9.43.jar'
7
+ require 'net/i2p/client/streaming/0.9.43/streaming-0.9.43.jar'
8
+ require 'net/i2p/i2p/0.9.43/i2p-0.9.43.jar'
9
+ end
10
+
11
+ if defined? Jars
12
+ require_jar 'net.i2p', 'router', '0.9.43'
13
+ require_jar 'net.i2p.client', 'mstreaming', '0.9.43'
14
+ require_jar 'net.i2p.client', 'streaming', '0.9.43'
15
+ require_jar 'net.i2p', 'i2p', '0.9.43'
16
+ end
data/lib/maybe.rb ADDED
@@ -0,0 +1,148 @@
1
+ class Object
2
+ def try(*a, &b)
3
+ if a.empty? && block_given?
4
+ yield self
5
+ else
6
+ public_send(*a, &b) if respond_to?(a.first)
7
+ end
8
+ end
9
+ end
10
+
11
+ class NilClass
12
+ def try(*args)
13
+ nil
14
+ end
15
+
16
+ def method_missing(method, *args)
17
+ nil
18
+ end
19
+ end
20
+
21
+ Optional = Struct.new(:value) do
22
+ def and_then(&block)
23
+ if value.nil?
24
+ Optional.new(nil)
25
+ else
26
+ block.call(value)
27
+ end
28
+ end
29
+
30
+ def method_missing(*args, &block)
31
+ and_then do |value|
32
+ Optional.new(value.public_send(*args, &block))
33
+ end
34
+ end
35
+ end
36
+
37
+ Many = Struct.new(:values) do
38
+ def and_then(&block)
39
+ Many.new(
40
+ values.map(&block).flat_map(&:values)
41
+ )
42
+ end
43
+ end
44
+
45
+ Eventually = Struct.new(:block) do
46
+ def and_then(&block)
47
+ Eventually.new do |success|
48
+ run do |value|
49
+ block.call(value).run(&success)
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ module Monad
56
+ def within(&block)
57
+ and_then do |value|
58
+ self.class.from_value(block.call(value))
59
+ end
60
+ end
61
+ end
62
+
63
+ Optional.include(Monad)
64
+ Many.include(Monad)
65
+ Eventually.include(Monad)
66
+
67
+
68
+ class Maybe
69
+ class Some
70
+ end
71
+ class None
72
+ end
73
+ end
74
+
75
+ module Functional
76
+ extend self
77
+ class Option
78
+ (Enumerable.instance_methods << :each).each do |enumerable_method|
79
+ define_method(enumerable_method) do |*args, &block|
80
+ res = enumerable_value.send(enumerable_method, *args, &block)
81
+ res.respond_to?(:each) ? Option(res.first) : res
82
+ end
83
+ end
84
+
85
+ alias_method :enumerable_value, :to_a
86
+ end
87
+
88
+ def Option(value)
89
+ if value.nil? || (value.respond_to?(:length) && value.length == 0)
90
+ None()
91
+ else
92
+ Some(value)
93
+ end
94
+ end
95
+
96
+ class None < Option
97
+ def get
98
+ fail 'No such element'
99
+ end
100
+
101
+ def or_else(default = nil)
102
+ block_given? ? yield : default
103
+ end
104
+
105
+ def method_missing(*)
106
+ self
107
+ end
108
+
109
+ private
110
+ def enumerable_value
111
+ []
112
+ end
113
+ end
114
+
115
+ def None
116
+ None.new
117
+ end
118
+
119
+ class Some < Option
120
+ def initialize(value)
121
+ @value = value
122
+ end
123
+
124
+ def get
125
+ value
126
+ end
127
+
128
+ def or_else(*)
129
+ value
130
+ end
131
+
132
+ def method_missing(method_sym, *args, &block)
133
+ map { |value| value.send(method_sym, *args, &block) }
134
+ end
135
+
136
+ private
137
+ attr_reader :value
138
+
139
+ def enumerable_value
140
+ [value]
141
+ end
142
+ end
143
+
144
+ def Some(value)
145
+ Some.new(value)
146
+ end
147
+ end
148
+