File tree Expand file tree Collapse file tree 2 files changed +49
-2
lines changed
lib/async/container/notify Expand file tree Collapse file tree 2 files changed +49
-2
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,8 @@ def self.load(message)
2525 value = false
2626 elsif value == "1"
2727 value = true
28+ elsif key == "errno" and value =~ /\A \- ?\d +\z /
29+ value = Integer ( value )
2830 end
2931
3032 next [ key . downcase . to_sym , value ]
@@ -74,7 +76,11 @@ def receive
7476
7577 message = Server . load ( data )
7678
77- yield message
79+ if block_given?
80+ yield message
81+ else
82+ return message
83+ end
7884 end
7985 end
8086 end
Original file line number Diff line number Diff line change 1313 let ( :notify_socket ) { server . path }
1414 let ( :client ) { subject ::Socket . new ( notify_socket ) }
1515
16+ it "can send and receive messages" do
17+ context = server . bind
18+
19+ client . send ( true : true , false : false , hello : "world" )
20+
21+ message = context . receive
22+
23+ expect ( message ) . to be == { true : true , false : false , hello : "world" }
24+ end
25+
1626 with "#ready!" do
1727 it "should send message" do
1828 begin
3141 end
3242 end
3343
34- expect ( messages . last ) . to have_keys ( ready : be == true )
44+ expect ( messages . last ) . to have_keys (
45+ ready : be == true
46+ )
3547 ensure
3648 context &.close
3749 Process . wait ( pid ) if pid
3850 end
3951 end
4052 end
53+
54+ with "#stopping!" do
55+ it "sends stopping message" do
56+ context = server . bind
57+
58+ client . stopping!
59+
60+ message = context . receive
61+
62+ expect ( message ) . to have_keys (
63+ stopping : be == true
64+ )
65+ end
66+ end
67+
68+ with "#error!" do
69+ it "sends error message" do
70+ context = server . bind
71+
72+ client . error! ( "Boom!" )
73+
74+ message = context . receive
75+
76+ expect ( message ) . to have_keys (
77+ status : be == "Boom!" ,
78+ errno : be == -1 ,
79+ )
80+ end
81+ end
4182end if Async ::Container . fork?
You can’t perform that action at this time.
0 commit comments