async_io 0.0.3 → 0.0.4

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: e24f134b58d1dae1aead7e0d986157fd388aca2b
4
- data.tar.gz: dd985952ae7916e4243928e9b15f82b50fedf559
3
+ metadata.gz: e768d314c92eac6b9cfc337526f1ac1ae05f11f6
4
+ data.tar.gz: 8bf2812033baa2729bfc2e1ba980b10f3fa0a759
5
5
  SHA512:
6
- metadata.gz: b48ec6125e80be69a6a6f514267e4b84d8f578f5156cfeb8b119f346fb08afd3044b46b88d09280b566adb0e06e4b82e9570c27df07cb09ecd584670f6ddd767
7
- data.tar.gz: fc268f76f43419877f277e29579bdcec69c4cb5400d1949aee8a1d441be38fea409ab739143993c0447c5af72b7eeb7b2552d0fcd05b796b4f7109bf829841dd
6
+ metadata.gz: a21e691691577890b5bbcb3a05dcda8356a3d420a675d337ebbfa3704b686e4a6b7eabc29e962d8ee6a42bc79cb9540ce18c54803334dd4eed7d341a86b838e1
7
+ data.tar.gz: b10b690d35df4cea199cb0be527d054bdb1582c36fa95db246f7949a51d105de6868019cbdc9616b64e64489d1c922dc1833aee88cd9f395dffd4c357be60a9a
data/lib/async_io/base.rb CHANGED
@@ -8,11 +8,9 @@ module AsyncIO
8
8
 
9
9
  ##
10
10
  # Default:
11
- # Number of threads to be spanwed is 1
11
+ # Number of threads to be spanwed is 5
12
12
  #
13
- # NOTE: Any sort of exception raised while
14
- # 'getting' a job done will not be raised at all.
15
- # Instead it will be logged to a specified log file.
13
+ # NOTE:
16
14
  #
17
15
  # Whenever an exception is raised, the thread that the
18
16
  # exception was raised from is killed, so we need a
@@ -21,9 +19,9 @@ module AsyncIO
21
19
  #
22
20
  attr_reader :queue, :threads
23
21
  attr_accessor :logger
24
- def initialize(n_threads=1)
25
- @logger = AsyncIO::Logger
26
- @queue = Queue.new
22
+ def initialize(n_threads = 5, args = { logger: AsyncIO::Logger, queue: Queue.new })
23
+ @logger = args[:logger]
24
+ @queue = args[:queue]
27
25
  @threads = []
28
26
  n_threads.times { @threads << Thread.new { consumer } }
29
27
  end
@@ -75,7 +73,7 @@ module AsyncIO
75
73
  # whenever you send a message +job+ to it. Once
76
74
  # job is finished you will be able to get its result.
77
75
  #
78
- def worker(payload, &job)
76
+ def worker(payload, job)
79
77
  rescuer do
80
78
  Worker.new(payload, job).tap { |w|
81
79
  queue.push(w)
@@ -90,9 +88,18 @@ module AsyncIO
90
88
  # and empty job. ( i.e empty block of code )
91
89
  #
92
90
  def async(&payload)
93
- worker(payload) { }
91
+ worker(payload, proc {})
94
92
  end
95
93
 
94
+ def async_with(job)
95
+ worker(proc {}, job)
96
+ end
97
+
98
+ ##
99
+ # TODO:
100
+ # Allow multiple intervals to run on the same thread by storing
101
+ # them in a list, and calling them later on.
102
+ #
96
103
  def interval(seconds)
97
104
  new_interval? do
98
105
  while true
@@ -1,3 +1,3 @@
1
1
  module AsyncIo
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/async_io.rb CHANGED
@@ -26,8 +26,12 @@ module AsyncIO
26
26
  # how it is available within a block later on.
27
27
  # NOTE: You must pass a job ( i.e ruby block ).
28
28
  #
29
- def self.async(payload = Proc.new{}, &job)
29
+ def self.async(payload = proc{}, &job)
30
30
  async_creator.worker(payload, &job)
31
31
  end
32
32
 
33
+ def self.async_with(job)
34
+ async_creator.async_with(job)
35
+ end
36
+
33
37
  end
@@ -29,7 +29,7 @@ describe AsyncIO::Base do
29
29
  end
30
30
 
31
31
  it "should create 1 thread as default" do
32
- alien.threads.size.should eq(1)
32
+ alien.threads.size.should eq 5
33
33
  end
34
34
 
35
35
  end
@@ -40,25 +40,13 @@ describe AsyncIO::Base do
40
40
  alien.should respond_to :worker
41
41
  end
42
42
 
43
- it "should_not raise_error when no block is passed" do
44
- expect {
45
- alien.worker(:jason)
46
- }.to_not raise_error
47
- end
48
-
49
- it "should not raise_error when block is passed" do
50
- expect {
51
- alien.worker(:lizza) { }
52
- }.to_not raise_error
53
- end
54
-
55
43
  it "should push worker onto the queue" do
56
- alien.worker(:paul) { }
44
+ alien.worker(:paul, proc {})
57
45
  alien.extract_size!.should eq(1)
58
46
  end
59
47
 
60
48
  it "should return worker" do
61
- result = alien.worker(:blunt) { }
49
+ result = alien.worker(:blunt, proc {})
62
50
  result.should be_instance_of AsyncIO::Worker
63
51
  end
64
52
  end
@@ -98,7 +86,7 @@ describe AsyncIO::Base do
98
86
  #
99
87
  alien.async(&payload)
100
88
 
101
- alien.should have_received(:worker).with(payload)
89
+ alien.should have_received(:worker).with( payload, kind_of(Proc) )
102
90
  end
103
91
  end
104
92
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antonio C Nalesso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-04 00:00:00.000000000 Z
11
+ date: 2014-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec