plux 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56011d823e56b1bd06759d5546edc8519338a99392ce980ebc6033b7f458cd0f
4
- data.tar.gz: 7b3353cbbb07daa6394aceb3fefa830c438c797a455352d6283c6a71942cdb59
3
+ metadata.gz: 8c413ca368b438a31cc35c74e711937a80ccabad0c55520c73fdc41dd02f4db0
4
+ data.tar.gz: 20093ac7f6e387e77142896c28888dffcc947af9e9cc827117b0c015ad0d2b2d
5
5
  SHA512:
6
- metadata.gz: f2c201408eb9e5d0d2b19d1eabf0908324645ef2b95b922bda8e1ec3f2b39d988b58ebfb50c1fc17ec2e0522900122956b65fd2bdda4285785e42f4b28ff0838
7
- data.tar.gz: 4ac2ab94501c97a09d3416d3dcf0837a04ecafc12050b0f8346f30a541e088059761ede6b7c674c9c1e720380a95b7bf1adc46d9c0df52c2dfa70a53132bcfb0
6
+ metadata.gz: 1684f9c33a9fab2dc02e2b957448e99d310c0ecf6e71f9e49a605d303b54bd12980654ca5f5c1e9566edf49b09fc5dcb7ead06b1ed5547e94f9fe9572b0308c1
7
+ data.tar.gz: 61ace71f940f837f41454a10262849cb090144c8402f29e79176fdd22917df41d8f87a6337aec8dcfe4fc876019363d7ad6078239271e20a5214e0c46e0f352d
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- plux (0.1.5)
4
+ plux (0.1.6)
5
5
  nio4r (~> 2.0)
6
6
 
7
7
  GEM
@@ -10,7 +10,7 @@ GEM
10
10
  coderay (1.1.2)
11
11
  method_source (0.9.2)
12
12
  minitest (5.14.1)
13
- nio4r (2.5.3)
13
+ nio4r (2.5.4)
14
14
  pry (0.12.2)
15
15
  coderay (~> 1.1.0)
16
16
  method_source (~> 0.9.0)
data/README.md CHANGED
@@ -47,6 +47,31 @@ end
47
47
  end
48
48
  ```
49
49
 
50
+ Also, you can boot multiple servers(processes) with same logic:
51
+
52
+ ```ruby
53
+ class AwesomeServer < Plux::Engine
54
+ # prepare thread-safe resources like mq/db, to handle requests
55
+ def prepare
56
+ # @db = ...
57
+ end
58
+
59
+ # threads call this method to deal with clients' message
60
+ def process(msg)
61
+ # @db << parse(msg)
62
+ end
63
+ end
64
+
65
+ a = AwesomeServer.new(:a)
66
+ b = AwesomeServer.new(:b)
67
+ c = AwesomeServer.new(:c, thread: 4)
68
+
69
+ a_client = a.connect
70
+ b_client = b.connect
71
+ c_client = c.connect
72
+ c_client_2 = c.connect
73
+ ```
74
+
50
75
  ## Development
51
76
 
52
77
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -4,6 +4,7 @@ require "plux/version"
4
4
  require "plux/server"
5
5
  require "plux/client"
6
6
  require "plux/parser"
7
+ require "plux/engine"
7
8
 
8
9
 
9
10
  module Plux
@@ -38,4 +39,5 @@ module Plux
38
39
  end
39
40
 
40
41
  FileUtils.mkdir_p(self.dir)
42
+
41
43
  end
@@ -0,0 +1,31 @@
1
+ module Plux
2
+ class Engine
3
+
4
+ def initialize(name, thread: 1)
5
+ engine = self
6
+
7
+ @server = ::Plux.worker(name, thread: thread) do
8
+ instance_variable_set(:@engine, engine)
9
+
10
+ def initialize
11
+ @engine = self.class.instance_variable_get(:@engine)
12
+ @engine.prepare
13
+ end
14
+
15
+ def work(msg)
16
+ @engine.process(msg)
17
+ end
18
+ end
19
+ end
20
+
21
+ def connect
22
+ @server.connect
23
+ end
24
+
25
+ def prepare
26
+ end
27
+
28
+ def process(msg)
29
+ end
30
+ end
31
+ end
@@ -43,7 +43,7 @@ module Plux
43
43
  child.close
44
44
  UNIXServer.open(Plux.server_file(name)) do |serv|
45
45
  parent.close
46
- worker = Class.new(&block).new
46
+ worker = Proc === block ? Class.new(&block).new : block
47
47
  reactor = Reactor.new(@thread, worker)
48
48
  loop{ reactor.register(serv.accept) }
49
49
  end
@@ -1,3 +1,3 @@
1
1
  module Plux
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plux
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-20 00:00:00.000000000 Z
11
+ date: 2020-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -99,6 +99,7 @@ files:
99
99
  - bin/setup
100
100
  - lib/plux.rb
101
101
  - lib/plux/client.rb
102
+ - lib/plux/engine.rb
102
103
  - lib/plux/parser.rb
103
104
  - lib/plux/reactor.rb
104
105
  - lib/plux/server.rb