riser 0.1.0

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.
@@ -0,0 +1,115 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module Riser
4
+ class Stream
5
+ def initialize(io)
6
+ @io = io
7
+ end
8
+
9
+ def to_io
10
+ @io.to_io
11
+ end
12
+
13
+ def gets
14
+ @io.gets
15
+ end
16
+
17
+ def read(size)
18
+ @io.read(size)
19
+ end
20
+
21
+ def readpartial(maxlen, outbuf=nil)
22
+ @io.readpartial(maxlen, outbuf)
23
+ end
24
+
25
+ def write(message)
26
+ @io.write(message)
27
+ end
28
+
29
+ def <<(message)
30
+ write(message)
31
+ self
32
+ end
33
+
34
+ def flush
35
+ @io.flush
36
+ self
37
+ end
38
+
39
+ def close
40
+ flush
41
+ @io.close
42
+ nil
43
+ end
44
+ end
45
+
46
+ class WriteBufferStream < Stream
47
+ def initialize(io, buffer_limit=1024*16)
48
+ super(io)
49
+ @buffer_limit = buffer_limit
50
+ @buffer_string = ''.b
51
+ end
52
+
53
+ def write_and_flush
54
+ write_bytes = @io.write(@buffer_string)
55
+ while (write_bytes < @buffer_string.bytesize)
56
+ remaining_byte_range = write_bytes..-1
57
+ write_bytes += @io.write(@buffer_string.byteslice(remaining_byte_range))
58
+ end
59
+ @buffer_string.clear
60
+ @io.flush
61
+ write_bytes
62
+ end
63
+ private :write_and_flush
64
+
65
+ def write(message)
66
+ @buffer_string << message.b
67
+ write_and_flush if (@buffer_string.bytesize >= @buffer_limit)
68
+ end
69
+
70
+ def flush
71
+ write_and_flush unless @buffer_string.empty?
72
+ self
73
+ end
74
+ end
75
+
76
+ class LoggingStream < Stream
77
+ def initialize(io, logger)
78
+ super(io)
79
+ @logger = logger
80
+ end
81
+
82
+ def gets
83
+ line = super
84
+ @logger.info("r #{line.inspect}")
85
+ line
86
+ end
87
+
88
+ def read(size)
89
+ data = super
90
+ @logger.info("r #{data.inspect}")
91
+ data
92
+ end
93
+
94
+ def readpartial(maxlen, outbuf=nil)
95
+ data = super
96
+ @logger.info("r #{data.inspect}")
97
+ data
98
+ end
99
+
100
+ def write(message)
101
+ @logger.info("w #{message.inspect}")
102
+ super
103
+ end
104
+
105
+ def close
106
+ @logger.info('close')
107
+ super
108
+ end
109
+ end
110
+ end
111
+
112
+ # Local Variables:
113
+ # mode: Ruby
114
+ # indent-tabs-mode: nil
115
+ # End:
@@ -0,0 +1,25 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'securerandom'
4
+ require 'tmpdir'
5
+
6
+ module Riser
7
+ module TemporaryPath
8
+ def make_unix_socket_path
9
+ tmp_dir = Dir.tmpdir
10
+ uuid = SecureRandom.uuid
11
+ "#{tmp_dir}/riser_#{uuid}"
12
+ end
13
+ module_function :make_unix_socket_path
14
+
15
+ def make_drbunix_uri
16
+ "drbunix:#{make_unix_socket_path}.drb"
17
+ end
18
+ module_function :make_drbunix_uri
19
+ end
20
+ end
21
+
22
+ # Local Variables:
23
+ # mode: Ruby
24
+ # indent-tabs-mode: nil
25
+ # End:
data/lib/riser/test.rb ADDED
@@ -0,0 +1,42 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'fileutils'
4
+
5
+ module Riser
6
+ module Test
7
+ class CallRecorder
8
+ def initialize(store_path)
9
+ @memory_records = []
10
+ @file_records = store_path
11
+ end
12
+
13
+ def call(record)
14
+ @memory_records << record
15
+ IO.write(@file_records, record + "\n", mode: 'a')
16
+ self
17
+ end
18
+
19
+ def get_memory_records
20
+ @memory_records
21
+ end
22
+
23
+ def get_file_records
24
+ if (File.exist? @file_records) then
25
+ IO.readlines(@file_records).map{|line| line.chomp }
26
+ else
27
+ []
28
+ end
29
+ end
30
+
31
+ def dispose
32
+ @memory_records.clear
33
+ FileUtils.rm_f(@file_records)
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ # Local Variables:
40
+ # mode: Ruby
41
+ # indent-tabs-mode: nil
42
+ # End:
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module Riser
4
+ VERSION = '0.1.0'
5
+ end
6
+
7
+ # Local Variables:
8
+ # mode: Ruby
9
+ # indent-tabs-mode: nil
10
+ # End:
data/lib/riser.rb ADDED
@@ -0,0 +1,28 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'riser/version'
4
+
5
+ module Riser
6
+ autoload :DRbServiceCall, 'riser/services'
7
+ autoload :DRbServiceServer, 'riser/services'
8
+ autoload :DRbServices, 'riser/services'
9
+ autoload :Daemon, 'riser/daemon'
10
+ autoload :LoggingStream, 'riser/stream'
11
+ autoload :ReadPoll, 'riser/poll'
12
+ autoload :Resource, 'riser/resource'
13
+ autoload :ResourceSet, 'riser/resource'
14
+ autoload :RootProcess, 'riser/daemon'
15
+ autoload :ServerSignal, 'riser/server'
16
+ autoload :SocketAddress, 'riser/server'
17
+ autoload :SocketServer, 'riser/server'
18
+ autoload :StatusFile, 'riser/daemon'
19
+ autoload :Stream, 'riser/stream'
20
+ autoload :TemporaryPath, 'riser/temppath'
21
+ autoload :TimeoutSizedQueue, 'riser/server'
22
+ autoload :WriteBufferStream, 'riser/stream'
23
+ end
24
+
25
+ # Local Variables:
26
+ # mode: Ruby
27
+ # indent-tabs-mode: nil
28
+ # End:
data/riser.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ lib = File.expand_path("../lib", __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require "riser/version"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "riser"
9
+ spec.version = Riser::VERSION
10
+ spec.authors = ["TOKI Yoshinori"]
11
+ spec.email = ["toki@freedom.ne.jp"]
12
+
13
+ spec.summary = %q{Riser}
14
+ spec.description = %q{Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process SERver.}
15
+ spec.homepage = ""
16
+ spec.license = "MIT"
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
19
+ f.match(%r{^(test|spec|features)/})
20
+ end
21
+ spec.bindir = "exe"
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.16"
27
+ spec.add_development_dependency "rake", "~> 12.3"
28
+ spec.add_development_dependency "test-unit", "~> 3.2.7"
29
+ spec.add_development_dependency "rdoc"
30
+ end
31
+
32
+ # Local Variables:
33
+ # mode: Ruby
34
+ # indent-tabs-mode: nil
35
+ # End:
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: riser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - TOKI Yoshinori
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-02-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.7
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.7
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Riser is a library of Ruby Infrastructure for cooperative multi-thread/multi-process
70
+ SERver.
71
+ email:
72
+ - toki@freedom.ne.jp
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - ".gitignore"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
81
+ - Rakefile
82
+ - bin/console
83
+ - bin/setup
84
+ - example/halo.html
85
+ - example/halo.rb
86
+ - example/halo.yml
87
+ - example/local_services.rb
88
+ - example/multiproc_server.rb
89
+ - example/simple_count.rb
90
+ - example/simple_daemon.rb
91
+ - example/simple_key_count.rb
92
+ - example/simple_server.rb
93
+ - example/simple_services.rb
94
+ - example/simple_tls.rb
95
+ - lib/riser.rb
96
+ - lib/riser/daemon.rb
97
+ - lib/riser/poll.rb
98
+ - lib/riser/resource.rb
99
+ - lib/riser/server.rb
100
+ - lib/riser/services.rb
101
+ - lib/riser/stream.rb
102
+ - lib/riser/temppath.rb
103
+ - lib/riser/test.rb
104
+ - lib/riser/version.rb
105
+ - riser.gemspec
106
+ homepage: ''
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubygems_version: 3.0.1
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: Riser
129
+ test_files: []