riser 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []