rev 0.1.1 → 0.1.2

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.
Files changed (207) hide show
  1. data/README +45 -9
  2. data/doc/rdoc/classes/Rev.html +368 -0
  3. data/doc/rdoc/classes/Rev.src/M000001.html +28 -0
  4. data/doc/rdoc/classes/Rev.src/M000002.html +35 -0
  5. data/doc/rdoc/classes/Rev.src/M000003.html +24 -0
  6. data/doc/rdoc/classes/Rev.src/M000004.html +28 -0
  7. data/doc/rdoc/classes/Rev.src/M000005.html +27 -0
  8. data/doc/rdoc/classes/Rev.src/M000006.html +33 -0
  9. data/doc/rdoc/classes/Rev.src/M000007.html +43 -0
  10. data/doc/rdoc/classes/Rev.src/M000008.html +16 -0
  11. data/doc/rdoc/classes/Rev/Buffer.html +354 -0
  12. data/doc/rdoc/classes/Rev/Buffer.src/M000019.html +17 -0
  13. data/doc/rdoc/classes/Rev/Buffer.src/M000020.html +29 -0
  14. data/doc/rdoc/classes/Rev/Buffer.src/M000021.html +27 -0
  15. data/doc/rdoc/classes/Rev/Buffer.src/M000022.html +27 -0
  16. data/doc/rdoc/classes/Rev/Buffer.src/M000023.html +31 -0
  17. data/doc/rdoc/classes/Rev/Buffer.src/M000024.html +31 -0
  18. data/doc/rdoc/classes/Rev/Buffer.src/M000025.html +30 -0
  19. data/doc/rdoc/classes/Rev/Buffer.src/M000026.html +50 -0
  20. data/doc/rdoc/classes/Rev/Buffer.src/M000027.html +22 -0
  21. data/doc/rdoc/classes/Rev/Buffer.src/M000028.html +24 -0
  22. data/doc/rdoc/classes/Rev/Buffer.src/M000029.html +24 -0
  23. data/doc/rdoc/classes/Rev/BufferedIO.html +397 -0
  24. data/doc/rdoc/classes/Rev/BufferedIO.src/M000095.html +23 -0
  25. data/doc/rdoc/classes/Rev/BufferedIO.src/M000096.html +16 -0
  26. data/doc/rdoc/classes/Rev/BufferedIO.src/M000097.html +16 -0
  27. data/doc/rdoc/classes/Rev/BufferedIO.src/M000098.html +16 -0
  28. data/doc/rdoc/classes/Rev/BufferedIO.src/M000099.html +18 -0
  29. data/doc/rdoc/classes/Rev/BufferedIO.src/M000100.html +18 -0
  30. data/doc/rdoc/classes/Rev/BufferedIO.src/M000101.html +23 -0
  31. data/doc/rdoc/classes/Rev/BufferedIO.src/M000102.html +18 -0
  32. data/doc/rdoc/classes/Rev/BufferedIO.src/M000103.html +20 -0
  33. data/doc/rdoc/classes/Rev/BufferedIO.src/M000104.html +24 -0
  34. data/doc/rdoc/classes/Rev/BufferedIO.src/M000105.html +23 -0
  35. data/doc/rdoc/classes/Rev/BufferedIO.src/M000106.html +22 -0
  36. data/doc/rdoc/classes/Rev/BufferedIO.src/M000107.html +29 -0
  37. data/doc/rdoc/classes/Rev/BufferedIO/Writer.html +154 -0
  38. data/doc/rdoc/classes/Rev/BufferedIO/Writer.src/M000108.html +19 -0
  39. data/doc/rdoc/classes/Rev/BufferedIO/Writer.src/M000109.html +18 -0
  40. data/doc/rdoc/classes/Rev/DNSResolver.html +401 -0
  41. data/doc/rdoc/classes/Rev/DNSResolver.src/M000124.html +25 -0
  42. data/doc/rdoc/classes/Rev/DNSResolver.src/M000125.html +29 -0
  43. data/doc/rdoc/classes/Rev/DNSResolver.src/M000126.html +20 -0
  44. data/doc/rdoc/classes/Rev/DNSResolver.src/M000127.html +19 -0
  45. data/doc/rdoc/classes/Rev/DNSResolver.src/M000128.html +16 -0
  46. data/doc/rdoc/classes/Rev/DNSResolver.src/M000129.html +16 -0
  47. data/doc/rdoc/classes/Rev/DNSResolver.src/M000131.html +19 -0
  48. data/doc/rdoc/classes/Rev/DNSResolver.src/M000132.html +21 -0
  49. data/doc/rdoc/classes/Rev/DNSResolver.src/M000133.html +27 -0
  50. data/doc/rdoc/classes/Rev/DNSResolver.src/M000134.html +28 -0
  51. data/doc/rdoc/classes/Rev/DNSResolver.src/M000135.html +55 -0
  52. data/doc/rdoc/classes/Rev/DNSResolver/Timeout.html +154 -0
  53. data/doc/rdoc/classes/Rev/DNSResolver/Timeout.src/M000136.html +20 -0
  54. data/doc/rdoc/classes/Rev/DNSResolver/Timeout.src/M000137.html +22 -0
  55. data/doc/rdoc/classes/Rev/HttpChunkHeader.html +156 -0
  56. data/doc/rdoc/classes/Rev/HttpChunkHeader.src/M000031.html +19 -0
  57. data/doc/rdoc/classes/Rev/HttpClient.html +460 -0
  58. data/doc/rdoc/classes/Rev/HttpClient.src/M000042.html +18 -0
  59. data/doc/rdoc/classes/Rev/HttpClient.src/M000043.html +27 -0
  60. data/doc/rdoc/classes/Rev/HttpClient.src/M000044.html +24 -0
  61. data/doc/rdoc/classes/Rev/HttpClient.src/M000045.html +19 -0
  62. data/doc/rdoc/classes/Rev/HttpClient.src/M000046.html +17 -0
  63. data/doc/rdoc/classes/Rev/HttpClient.src/M000047.html +19 -0
  64. data/doc/rdoc/classes/Rev/HttpClient.src/M000048.html +18 -0
  65. data/doc/rdoc/classes/Rev/HttpClient.src/M000049.html +18 -0
  66. data/doc/rdoc/classes/Rev/HttpClient.src/M000050.html +19 -0
  67. data/doc/rdoc/classes/Rev/HttpClient.src/M000051.html +19 -0
  68. data/doc/rdoc/classes/Rev/HttpClient.src/M000052.html +19 -0
  69. data/doc/rdoc/classes/Rev/HttpClient.src/M000053.html +41 -0
  70. data/doc/rdoc/classes/Rev/HttpClient.src/M000054.html +18 -0
  71. data/doc/rdoc/classes/Rev/HttpClient.src/M000055.html +34 -0
  72. data/doc/rdoc/classes/Rev/HttpEncoding.html +310 -0
  73. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000009.html +20 -0
  74. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000010.html +20 -0
  75. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000011.html +18 -0
  76. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000012.html +18 -0
  77. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000013.html +18 -0
  78. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000014.html +19 -0
  79. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000015.html +18 -0
  80. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000016.html +18 -0
  81. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000017.html +22 -0
  82. data/doc/rdoc/classes/Rev/HttpEncoding.src/M000018.html +18 -0
  83. data/doc/rdoc/classes/Rev/HttpResponseHeader.html +219 -0
  84. data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000032.html +18 -0
  85. data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000033.html +18 -0
  86. data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000034.html +18 -0
  87. data/doc/rdoc/classes/Rev/IOWatcher.html +285 -0
  88. data/doc/rdoc/classes/Rev/IOWatcher.src/M000079.html +17 -0
  89. data/doc/rdoc/classes/Rev/IOWatcher.src/M000080.html +27 -0
  90. data/doc/rdoc/classes/Rev/IOWatcher.src/M000081.html +26 -0
  91. data/doc/rdoc/classes/Rev/IOWatcher.src/M000082.html +27 -0
  92. data/doc/rdoc/classes/Rev/IOWatcher.src/M000083.html +27 -0
  93. data/doc/rdoc/classes/Rev/IOWatcher.src/M000084.html +24 -0
  94. data/doc/rdoc/classes/Rev/IOWatcher.src/M000085.html +25 -0
  95. data/doc/rdoc/classes/Rev/Listener.html +207 -0
  96. data/doc/rdoc/classes/Rev/Listener.src/M000065.html +19 -0
  97. data/doc/rdoc/classes/Rev/Listener.src/M000066.html +19 -0
  98. data/doc/rdoc/classes/Rev/Listener.src/M000067.html +16 -0
  99. data/doc/rdoc/classes/Rev/Listener.src/M000068.html +18 -0
  100. data/doc/rdoc/classes/Rev/Loop.html +395 -0
  101. data/doc/rdoc/classes/Rev/Loop.src/M000070.html +25 -0
  102. data/doc/rdoc/classes/Rev/Loop.src/M000071.html +45 -0
  103. data/doc/rdoc/classes/Rev/Loop.src/M000072.html +18 -0
  104. data/doc/rdoc/classes/Rev/Loop.src/M000073.html +23 -0
  105. data/doc/rdoc/classes/Rev/Loop.src/M000074.html +19 -0
  106. data/doc/rdoc/classes/Rev/Loop.src/M000075.html +17 -0
  107. data/doc/rdoc/classes/Rev/Loop.src/M000076.html +27 -0
  108. data/doc/rdoc/classes/Rev/Loop.src/M000077.html +32 -0
  109. data/doc/rdoc/classes/Rev/Loop.src/M000078.html +32 -0
  110. data/doc/rdoc/classes/Rev/Server.html +164 -0
  111. data/doc/rdoc/classes/Rev/Server.src/M000121.html +32 -0
  112. data/doc/rdoc/classes/Rev/Server.src/M000122.html +20 -0
  113. data/doc/rdoc/classes/Rev/Socket.html +213 -0
  114. data/doc/rdoc/classes/Rev/Socket.src/M000035.html +21 -0
  115. data/doc/rdoc/classes/Rev/Socket.src/M000036.html +25 -0
  116. data/doc/rdoc/classes/Rev/Socket.src/M000037.html +16 -0
  117. data/doc/rdoc/classes/Rev/Socket.src/M000038.html +16 -0
  118. data/doc/rdoc/classes/Rev/Socket/Connector.html +154 -0
  119. data/doc/rdoc/classes/Rev/Socket/Connector.src/M000040.html +19 -0
  120. data/doc/rdoc/classes/Rev/Socket/Connector.src/M000041.html +28 -0
  121. data/doc/rdoc/classes/Rev/TCPListener.html +161 -0
  122. data/doc/rdoc/classes/Rev/TCPListener.src/M000069.html +23 -0
  123. data/doc/rdoc/classes/Rev/TCPServer.html +147 -0
  124. data/doc/rdoc/classes/Rev/TCPServer.src/M000123.html +20 -0
  125. data/doc/rdoc/classes/Rev/TCPSocket.html +233 -0
  126. data/doc/rdoc/classes/Rev/TCPSocket.src/M000056.html +20 -0
  127. data/doc/rdoc/classes/Rev/TCPSocket.src/M000057.html +34 -0
  128. data/doc/rdoc/classes/Rev/TCPSocket.src/M000058.html +24 -0
  129. data/doc/rdoc/classes/Rev/TCPSocket.src/M000059.html +18 -0
  130. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.html +171 -0
  131. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000060.html +19 -0
  132. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000061.html +27 -0
  133. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000062.html +23 -0
  134. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.html +154 -0
  135. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.src/M000063.html +25 -0
  136. data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.src/M000064.html +23 -0
  137. data/doc/rdoc/classes/Rev/TimerWatcher.html +288 -0
  138. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000086.html +17 -0
  139. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000087.html +27 -0
  140. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000088.html +26 -0
  141. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000089.html +27 -0
  142. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000090.html +27 -0
  143. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000091.html +42 -0
  144. data/doc/rdoc/classes/Rev/TimerWatcher.src/M000092.html +24 -0
  145. data/doc/rdoc/classes/Rev/UNIXListener.html +147 -0
  146. data/doc/rdoc/classes/Rev/UNIXListener.src/M000120.html +18 -0
  147. data/doc/rdoc/classes/Rev/UNIXServer.html +147 -0
  148. data/doc/rdoc/classes/Rev/UNIXServer.src/M000030.html +18 -0
  149. data/doc/rdoc/classes/Rev/UNIXSocket.html +175 -0
  150. data/doc/rdoc/classes/Rev/UNIXSocket.src/M000093.html +18 -0
  151. data/doc/rdoc/classes/Rev/UNIXSocket.src/M000094.html +21 -0
  152. data/doc/rdoc/classes/Rev/Watcher.html +349 -0
  153. data/doc/rdoc/classes/Rev/Watcher.src/M000110.html +20 -0
  154. data/doc/rdoc/classes/Rev/Watcher.src/M000111.html +20 -0
  155. data/doc/rdoc/classes/Rev/Watcher.src/M000112.html +17 -0
  156. data/doc/rdoc/classes/Rev/Watcher.src/M000113.html +48 -0
  157. data/doc/rdoc/classes/Rev/Watcher.src/M000114.html +62 -0
  158. data/doc/rdoc/classes/Rev/Watcher.src/M000115.html +34 -0
  159. data/doc/rdoc/classes/Rev/Watcher.src/M000116.html +34 -0
  160. data/doc/rdoc/classes/Rev/Watcher.src/M000117.html +27 -0
  161. data/doc/rdoc/classes/Rev/Watcher.src/M000118.html +24 -0
  162. data/doc/rdoc/classes/Rev/Watcher.src/M000119.html +27 -0
  163. data/doc/rdoc/created.rid +1 -0
  164. data/doc/rdoc/files/LICENSE.html +165 -0
  165. data/doc/rdoc/files/README.html +297 -0
  166. data/doc/rdoc/files/ext/rev/rev_buffer_c.html +101 -0
  167. data/doc/rdoc/files/ext/rev/rev_ext_c.html +101 -0
  168. data/doc/rdoc/files/ext/rev/rev_io_watcher_c.html +101 -0
  169. data/doc/rdoc/files/ext/rev/rev_loop_c.html +101 -0
  170. data/doc/rdoc/files/ext/rev/rev_timer_watcher_c.html +101 -0
  171. data/doc/rdoc/files/ext/rev/rev_watcher_c.html +101 -0
  172. data/doc/rdoc/files/lib/rev/buffered_io_rb.html +101 -0
  173. data/doc/rdoc/files/lib/rev/dns_resolver_rb.html +101 -0
  174. data/doc/rdoc/files/lib/rev/http_client_rb.html +101 -0
  175. data/doc/rdoc/files/lib/rev/io_watcher_rb.html +101 -0
  176. data/doc/rdoc/files/lib/rev/listener_rb.html +108 -0
  177. data/doc/rdoc/files/lib/rev/loop_rb.html +101 -0
  178. data/doc/rdoc/files/lib/rev/server_rb.html +101 -0
  179. data/doc/rdoc/files/lib/rev/socket_rb.html +109 -0
  180. data/doc/rdoc/files/lib/rev/timer_watcher_rb.html +101 -0
  181. data/doc/rdoc/files/lib/rev/watcher_rb.html +101 -0
  182. data/doc/rdoc/files/lib/rev_rb.html +101 -0
  183. data/doc/rdoc/fr_class_index.html +52 -0
  184. data/doc/rdoc/fr_file_index.html +45 -0
  185. data/doc/rdoc/fr_method_index.html +163 -0
  186. data/doc/rdoc/index.html +24 -0
  187. data/doc/rdoc/rdoc-style.css +208 -0
  188. data/ext/rev/extconf.rb +1 -1
  189. data/ext/rev/rev.h +0 -1
  190. data/ext/rev/rev_buffer.c +606 -0
  191. data/ext/rev/rev_ext.c +1 -0
  192. data/ext/rev/rev_io_watcher.c +53 -19
  193. data/ext/rev/rev_loop.c +12 -35
  194. data/ext/rev/rev_timer_watcher.c +45 -3
  195. data/ext/rev/rev_watcher.c +13 -1
  196. data/lib/http11_client.bundle +0 -0
  197. data/lib/rev.rb +1 -1
  198. data/lib/rev/buffered_io.rb +25 -22
  199. data/lib/rev/dns_resolver.rb +31 -14
  200. data/lib/rev/http_client.rb +88 -91
  201. data/lib/rev/listener.rb +22 -5
  202. data/lib/rev/loop.rb +13 -0
  203. data/lib/rev/server.rb +10 -3
  204. data/lib/rev/socket.rb +30 -9
  205. data/lib/rev/watcher.rb +4 -2
  206. data/lib/rev_ext.bundle +0 -0
  207. metadata +230 -2
data/README CHANGED
@@ -75,17 +75,16 @@ core socket classes are also provided. Among these are:
75
75
 
76
76
  Below is an example of how to write an echo server:
77
77
 
78
+ HOST = 'localhost'
78
79
  PORT = 4321
79
80
 
80
81
  class EchoServerConnection < Rev::TCPSocket
81
- def initialize(socket)
82
- super
83
-
84
- puts "Received connection from #{remote_addr}:#{remote_port}"
82
+ def on_connect
83
+ puts "#{remote_addr}:#{remote_port} connected"
85
84
  end
86
85
 
87
86
  def on_close
88
- puts "Connection closed from #{remote_addr}:#{remote_port}"
87
+ puts "#{remote_addr}:#{remote_port} disconnected"
89
88
  end
90
89
 
91
90
  def on_read(data)
@@ -93,11 +92,11 @@ Below is an example of how to write an echo server:
93
92
  end
94
93
  end
95
94
 
96
- event_loop = Rev::Loop.new
97
- Rev::TCPServer.new('localhost', PORT, EchoServerConnection).attach(event_loop)
95
+ server = Rev::TCPServer.new('localhost', PORT, EchoServerConnection)
96
+ server.attach(Rev::Loop.default)
98
97
 
99
- puts "Echo server listening on port #{PORT}"
100
- event_loop.run
98
+ puts "Echo server listening on #{HOST}:#{PORT}"
99
+ Rev::Loop.default.run
101
100
 
102
101
  Here a new observer type (EchoServerConnection) is made by subclassing an
103
102
  existing one and adding new implementations to existing event handlers.
@@ -108,3 +107,40 @@ Rev::Watcher) is created and attached to the event loop.
108
107
  Once this is done, the event loop is started with event_loop.run. This method
109
108
  will block until there are no active watchers for the loop or the loop is
110
109
  stopped explicitly with event_loop.stop.
110
+
111
+ == Defining Callbacks at Runtime
112
+
113
+ It's often tedious to subclass in order to just change one callback. Rev
114
+ gives you the ability to change event callbacks on the fly (provided you
115
+ haven't overridden them in a subclass). This is especially useful for small
116
+ one off programs or just experimenting with the API.
117
+
118
+ Any callback (methods prefixed with on_*) can be set on the fly by passing it
119
+ a block.
120
+
121
+ Below is an example of using this syntax. It implements an echo server
122
+ identical to the one above:
123
+
124
+ HOST = '127.0.0.1'
125
+ PORT = 4321
126
+
127
+ server = Rev::TCPServer.new(ADDR, PORT) do |c|
128
+ c.on_connect { puts "#{remote_addr}:#{remote_port} connected" }
129
+ c.on_close { puts "#{remote_addr}:#{remote_port} disconnected" }
130
+ c.on_read { |data| write data }
131
+ end
132
+
133
+ server.attach(Rev::Loop.default)
134
+
135
+ puts "Echo server listening on #{HOST}:#{PORT}"
136
+ Rev::Loop.default.run
137
+
138
+ As you can see, it provides a more concise (albeint slightly slower)
139
+ expression of the same server as above, without the need to subclass.
140
+
141
+ Rev::TCPServer will automatically yield new connections if a block is
142
+ given. In this case the "c" variable being passed to the block is
143
+ a new instance of Rev::TCPSocket representing the newly created connection.
144
+
145
+ The above example sets the on_connect, on_close, and on_read callbacks each
146
+ time a new connection is created.
@@ -0,0 +1,368 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Rev</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Rev</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/rev/buffered_io_rb.html">
59
+ lib/rev/buffered_io.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/rev/dns_resolver_rb.html">
63
+ lib/rev/dns_resolver.rb
64
+ </a>
65
+ <br />
66
+ <a href="../files/lib/rev/http_client_rb.html">
67
+ lib/rev/http_client.rb
68
+ </a>
69
+ <br />
70
+ <a href="../files/lib/rev/io_watcher_rb.html">
71
+ lib/rev/io_watcher.rb
72
+ </a>
73
+ <br />
74
+ <a href="../files/lib/rev/listener_rb.html">
75
+ lib/rev/listener.rb
76
+ </a>
77
+ <br />
78
+ <a href="../files/lib/rev/loop_rb.html">
79
+ lib/rev/loop.rb
80
+ </a>
81
+ <br />
82
+ <a href="../files/lib/rev/server_rb.html">
83
+ lib/rev/server.rb
84
+ </a>
85
+ <br />
86
+ <a href="../files/lib/rev/socket_rb.html">
87
+ lib/rev/socket.rb
88
+ </a>
89
+ <br />
90
+ <a href="../files/lib/rev/timer_watcher_rb.html">
91
+ lib/rev/timer_watcher.rb
92
+ </a>
93
+ <br />
94
+ <a href="../files/lib/rev/watcher_rb.html">
95
+ lib/rev/watcher.rb
96
+ </a>
97
+ <br />
98
+ <a href="../files/lib/rev_rb.html">
99
+ lib/rev.rb
100
+ </a>
101
+ <br />
102
+ <a href="../files/ext/rev/rev_buffer_c.html">
103
+ ext/rev/rev_buffer.c
104
+ </a>
105
+ <br />
106
+ <a href="../files/ext/rev/rev_ext_c.html">
107
+ ext/rev/rev_ext.c
108
+ </a>
109
+ <br />
110
+ <a href="../files/ext/rev/rev_io_watcher_c.html">
111
+ ext/rev/rev_io_watcher.c
112
+ </a>
113
+ <br />
114
+ <a href="../files/ext/rev/rev_loop_c.html">
115
+ ext/rev/rev_loop.c
116
+ </a>
117
+ <br />
118
+ <a href="../files/ext/rev/rev_timer_watcher_c.html">
119
+ ext/rev/rev_timer_watcher.c
120
+ </a>
121
+ <br />
122
+ <a href="../files/ext/rev/rev_watcher_c.html">
123
+ ext/rev/rev_watcher.c
124
+ </a>
125
+ <br />
126
+ </td>
127
+ </tr>
128
+
129
+ </table>
130
+ </div>
131
+ <!-- banner header -->
132
+
133
+ <div id="bodyContent">
134
+
135
+
136
+
137
+ <div id="contextContent">
138
+
139
+ <div id="description">
140
+ <p>
141
+ Watchers are <a href="Rev.html">Rev</a>&#8216;s event observers. They
142
+ contain a set of callback methods prefixed by on_* which fire whenever
143
+ events occur.
144
+ </p>
145
+ <p>
146
+ In order for a watcher to fire events it must be attached to a running
147
+ loop. Every watcher has an attach and detach method to control which loop
148
+ it&#8216;s associated with.
149
+ </p>
150
+ <p>
151
+ Watchers also have an enable and disable method. This allows a watcher to
152
+ temporarily ignore certain events while remaining attached to a given loop.
153
+ This is good for watchers which need to be toggled on and off.
154
+ </p>
155
+
156
+ </div>
157
+
158
+
159
+ </div>
160
+
161
+ <div id="method-list">
162
+ <h3 class="section-bar">Methods</h3>
163
+
164
+ <div class="name-list">
165
+ <a href="#M000003">parse_chunk_header</a>&nbsp;&nbsp;
166
+ <a href="#M000001">parse_header</a>&nbsp;&nbsp;
167
+ <a href="#M000002">parse_response_header</a>&nbsp;&nbsp;
168
+ <a href="#M000007">process_body</a>&nbsp;&nbsp;
169
+ <a href="#M000004">process_chunk_body</a>&nbsp;&nbsp;
170
+ <a href="#M000005">process_chunk_footer</a>&nbsp;&nbsp;
171
+ <a href="#M000006">process_response_footer</a>&nbsp;&nbsp;
172
+ <a href="#M000008">version</a>&nbsp;&nbsp;
173
+ </div>
174
+ </div>
175
+
176
+ </div>
177
+
178
+
179
+ <!-- if includes -->
180
+
181
+ <div id="section">
182
+
183
+ <div id="class-list">
184
+ <h3 class="section-bar">Classes and Modules</h3>
185
+
186
+ Module <a href="Rev/HttpEncoding.html" class="link">Rev::HttpEncoding</a><br />
187
+ Class <a href="Rev/Buffer.html" class="link">Rev::Buffer</a><br />
188
+ Class <a href="Rev/BufferedIO.html" class="link">Rev::BufferedIO</a><br />
189
+ Class <a href="Rev/DNSResolver.html" class="link">Rev::DNSResolver</a><br />
190
+ Class <a href="Rev/HttpChunkHeader.html" class="link">Rev::HttpChunkHeader</a><br />
191
+ Class <a href="Rev/HttpClient.html" class="link">Rev::HttpClient</a><br />
192
+ Class <a href="Rev/HttpResponseHeader.html" class="link">Rev::HttpResponseHeader</a><br />
193
+ Class <a href="Rev/IOWatcher.html" class="link">Rev::IOWatcher</a><br />
194
+ Class <a href="Rev/Listener.html" class="link">Rev::Listener</a><br />
195
+ Class <a href="Rev/Loop.html" class="link">Rev::Loop</a><br />
196
+ Class <a href="Rev/Server.html" class="link">Rev::Server</a><br />
197
+ Class <a href="Rev/Socket.html" class="link">Rev::Socket</a><br />
198
+ Class <a href="Rev/TCPListener.html" class="link">Rev::TCPListener</a><br />
199
+ Class <a href="Rev/TCPServer.html" class="link">Rev::TCPServer</a><br />
200
+ Class <a href="Rev/TCPSocket.html" class="link">Rev::TCPSocket</a><br />
201
+ Class <a href="Rev/TimerWatcher.html" class="link">Rev::TimerWatcher</a><br />
202
+ Class <a href="Rev/UNIXListener.html" class="link">Rev::UNIXListener</a><br />
203
+ Class <a href="Rev/UNIXServer.html" class="link">Rev::UNIXServer</a><br />
204
+ Class <a href="Rev/UNIXSocket.html" class="link">Rev::UNIXSocket</a><br />
205
+ Class <a href="Rev/Watcher.html" class="link">Rev::Watcher</a><br />
206
+
207
+ </div>
208
+
209
+ <div id="constants-list">
210
+ <h3 class="section-bar">Constants</h3>
211
+
212
+ <div class="name-list">
213
+ <table summary="Constants">
214
+ <tr class="top-aligned-row context-row">
215
+ <td class="context-item-name">VERSION</td>
216
+ <td>=</td>
217
+ <td class="context-item-value">'0.1.2' unless defined? Rev::VERSION</td>
218
+ </tr>
219
+ <tr class="top-aligned-row context-row">
220
+ <td class="context-item-name">LIBEV_VERSION</td>
221
+ <td>=</td>
222
+ <td class="context-item-value">rb_sprintf(&quot;%d.%d&quot;, ev_version_major(), ev_version_minor())</td>
223
+ <td width="3em">&nbsp;</td>
224
+ <td class="context-item-desc">
225
+ Make libev <a href="Rev.html#M000008">version</a> available in Ruby
226
+
227
+ </td>
228
+ </tr>
229
+ </table>
230
+ </div>
231
+ </div>
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <!-- if method_list -->
239
+ <div id="methods">
240
+ <h3 class="section-bar">Public Class methods</h3>
241
+
242
+ <div id="method-M000008" class="method-detail">
243
+ <a name="M000008"></a>
244
+
245
+ <div class="method-heading">
246
+ <a href="Rev.src/M000008.html" target="Code" class="method-signature"
247
+ onclick="popupCode('Rev.src/M000008.html');return false;">
248
+ <span class="method-name">version</span><span class="method-args">()</span>
249
+ </a>
250
+ </div>
251
+
252
+ <div class="method-description">
253
+ </div>
254
+ </div>
255
+
256
+ <h3 class="section-bar">Public Instance methods</h3>
257
+
258
+ <div id="method-M000003" class="method-detail">
259
+ <a name="M000003"></a>
260
+
261
+ <div class="method-heading">
262
+ <a href="Rev.src/M000003.html" target="Code" class="method-signature"
263
+ onclick="popupCode('Rev.src/M000003.html');return false;">
264
+ <span class="method-name">parse_chunk_header</span><span class="method-args">()</span>
265
+ </a>
266
+ </div>
267
+
268
+ <div class="method-description">
269
+ </div>
270
+ </div>
271
+
272
+ <div id="method-M000001" class="method-detail">
273
+ <a name="M000001"></a>
274
+
275
+ <div class="method-heading">
276
+ <a href="Rev.src/M000001.html" target="Code" class="method-signature"
277
+ onclick="popupCode('Rev.src/M000001.html');return false;">
278
+ <span class="method-name">parse_header</span><span class="method-args">(header)</span>
279
+ </a>
280
+ </div>
281
+
282
+ <div class="method-description">
283
+ </div>
284
+ </div>
285
+
286
+ <div id="method-M000002" class="method-detail">
287
+ <a name="M000002"></a>
288
+
289
+ <div class="method-heading">
290
+ <a href="Rev.src/M000002.html" target="Code" class="method-signature"
291
+ onclick="popupCode('Rev.src/M000002.html');return false;">
292
+ <span class="method-name">parse_response_header</span><span class="method-args">()</span>
293
+ </a>
294
+ </div>
295
+
296
+ <div class="method-description">
297
+ </div>
298
+ </div>
299
+
300
+ <div id="method-M000007" class="method-detail">
301
+ <a name="M000007"></a>
302
+
303
+ <div class="method-heading">
304
+ <a href="Rev.src/M000007.html" target="Code" class="method-signature"
305
+ onclick="popupCode('Rev.src/M000007.html');return false;">
306
+ <span class="method-name">process_body</span><span class="method-args">()</span>
307
+ </a>
308
+ </div>
309
+
310
+ <div class="method-description">
311
+ </div>
312
+ </div>
313
+
314
+ <div id="method-M000004" class="method-detail">
315
+ <a name="M000004"></a>
316
+
317
+ <div class="method-heading">
318
+ <a href="Rev.src/M000004.html" target="Code" class="method-signature"
319
+ onclick="popupCode('Rev.src/M000004.html');return false;">
320
+ <span class="method-name">process_chunk_body</span><span class="method-args">()</span>
321
+ </a>
322
+ </div>
323
+
324
+ <div class="method-description">
325
+ </div>
326
+ </div>
327
+
328
+ <div id="method-M000005" class="method-detail">
329
+ <a name="M000005"></a>
330
+
331
+ <div class="method-heading">
332
+ <a href="Rev.src/M000005.html" target="Code" class="method-signature"
333
+ onclick="popupCode('Rev.src/M000005.html');return false;">
334
+ <span class="method-name">process_chunk_footer</span><span class="method-args">()</span>
335
+ </a>
336
+ </div>
337
+
338
+ <div class="method-description">
339
+ </div>
340
+ </div>
341
+
342
+ <div id="method-M000006" class="method-detail">
343
+ <a name="M000006"></a>
344
+
345
+ <div class="method-heading">
346
+ <a href="Rev.src/M000006.html" target="Code" class="method-signature"
347
+ onclick="popupCode('Rev.src/M000006.html');return false;">
348
+ <span class="method-name">process_response_footer</span><span class="method-args">()</span>
349
+ </a>
350
+ </div>
351
+
352
+ <div class="method-description">
353
+ </div>
354
+ </div>
355
+
356
+
357
+ </div>
358
+
359
+
360
+ </div>
361
+
362
+
363
+ <div id="validator-badges">
364
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
365
+ </div>
366
+
367
+ </body>
368
+ </html>
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>parse_header (Rev)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre> <span class="ruby-comment cmt"># File lib/rev/http_client.rb, line 296</span>
14
+ 296: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_header</span>(<span class="ruby-identifier">header</span>)
15
+ 297: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">empty?</span>
16
+ 298:
17
+ 299: <span class="ruby-ivar">@parser_nbytes</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">execute</span>(<span class="ruby-identifier">header</span>, <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">to_str</span>, <span class="ruby-ivar">@parser_nbytes</span>)
18
+ 300: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">finished?</span>
19
+ 301:
20
+ 302: <span class="ruby-comment cmt"># Clear parsed data from the buffer</span>
21
+ 303: <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">read</span>(<span class="ruby-ivar">@parser_nbytes</span>)
22
+ 304: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">reset</span>
23
+ 305: <span class="ruby-ivar">@parser_nbytes</span> = <span class="ruby-value">0</span>
24
+ 306:
25
+ 307: <span class="ruby-keyword kw">true</span>
26
+ 308: <span class="ruby-keyword kw">end</span></pre>
27
+ </body>
28
+ </html>