Go.rb 0.1.3 → 0.2.0

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
  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: []