Go.rb 0.1.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 15835470aa1c2184c9588f685b18ebbb35924a3f
4
- data.tar.gz: 28007c58af472a54ade8bf74bd30cb7878350174
3
+ metadata.gz: e83d89e95b8c04124d749769213f95cde616d2b4
4
+ data.tar.gz: d13d4a943eb24c3bba7f0b6e6c32bde158c7c955
5
5
  SHA512:
6
- metadata.gz: ce83cb8fd25c08e409580ac62375975c981981f538974e596fce73b5495063873b9fe264b9bbab5f59ae9965ead065eec5fc62f28c7ba043701efb6b1abffb34
7
- data.tar.gz: b8459c81e1b6ea35fa9ae1ee8266d7c1b6d937106fa271135d5c96b4f5eefa0fda47022bf5a216993159463915ab8bef42a3aafbe229bdbae57ca829f300e8d1
6
+ metadata.gz: f5f2b7ab6fb493a82ad4f2d82fcb47b16f3c7d8adb81506a520246ab46392271c078048008960829b0c3c07642e01017eb3510aafdc7ea5554c98def82b0356e
7
+ data.tar.gz: ea7b1925d8f6365b442f79d929b690527c5b2ffd52b748e8eaaface9552ee040b276a67a68401e660c9c2e5488b441228ce9085201ce1b9eea5edef01794da6b
data/lib/go.rb CHANGED
@@ -3,3 +3,5 @@ require "go/concurrency/pool"
3
3
  require "go/goconfig"
4
4
  require "go/kernel"
5
5
  require "go/engine"
6
+ require "go/process/goprocess"
7
+ require "go/process/channel"
data/lib/go/kernel.rb CHANGED
@@ -8,4 +8,12 @@ module ::Kernel
8
8
  Go::Config.get().thread_pool().execute_proc(block)
9
9
  end
10
10
 
11
+ def gofork(*channels, &block)
12
+ Go::Process.new *channels, &block
13
+ end
14
+
15
+ def gochan
16
+ Go::Channel.new
17
+ end
18
+
11
19
  end
@@ -0,0 +1,51 @@
1
+ module Go
2
+ class Channel
3
+
4
+ def initialize
5
+ @reader, @writer = IO.pipe
6
+ end
7
+
8
+ def puts data
9
+ @writer.puts data
10
+ end
11
+
12
+ def << data
13
+ write data
14
+ end
15
+
16
+ def gets
17
+ @reader.gets
18
+ end
19
+
20
+ def write data
21
+ @writer.write data
22
+ end
23
+
24
+ def read length=-1
25
+ if length == -1
26
+ @reader.read
27
+ else
28
+ @reader.read length
29
+ end
30
+ end
31
+
32
+ def reader
33
+ @reader
34
+ end
35
+
36
+ def writer
37
+ @writer
38
+ end
39
+
40
+ def close
41
+ destroy
42
+ end
43
+
44
+ def destroy
45
+ @reader.close
46
+ @writer.close
47
+ @reader = nil
48
+ @writer = nil
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,28 @@
1
+ module Go
2
+ class Process
3
+
4
+ def initialize *channels, &block
5
+ @channels = channels
6
+ @pid = fork {
7
+ block.call *channels
8
+ }
9
+ end
10
+
11
+ def wait
12
+ ::Process.wait @pid
13
+ end
14
+
15
+ def channels
16
+ @channels
17
+ end
18
+
19
+ def pid
20
+ @pid
21
+ end
22
+
23
+ def kill
24
+ ::Process.kill 9, @pid
25
+ end
26
+
27
+ end
28
+ end
data/lib/go/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Go
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Go.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JacisNonsense
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-10 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,6 +86,8 @@ files:
86
86
  - lib/go/engine.rb
87
87
  - lib/go/goconfig.rb
88
88
  - lib/go/kernel.rb
89
+ - lib/go/process/channel.rb
90
+ - lib/go/process/goprocess.rb
89
91
  - lib/go/version.rb
90
92
  homepage: http://www.github.com/JacisNonsense/go.rb
91
93
  licenses: []