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.
- data/README +45 -9
- data/doc/rdoc/classes/Rev.html +368 -0
- data/doc/rdoc/classes/Rev.src/M000001.html +28 -0
- data/doc/rdoc/classes/Rev.src/M000002.html +35 -0
- data/doc/rdoc/classes/Rev.src/M000003.html +24 -0
- data/doc/rdoc/classes/Rev.src/M000004.html +28 -0
- data/doc/rdoc/classes/Rev.src/M000005.html +27 -0
- data/doc/rdoc/classes/Rev.src/M000006.html +33 -0
- data/doc/rdoc/classes/Rev.src/M000007.html +43 -0
- data/doc/rdoc/classes/Rev.src/M000008.html +16 -0
- data/doc/rdoc/classes/Rev/Buffer.html +354 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000019.html +17 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000020.html +29 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000021.html +27 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000022.html +27 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000023.html +31 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000024.html +31 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000025.html +30 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000026.html +50 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000027.html +22 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000028.html +24 -0
- data/doc/rdoc/classes/Rev/Buffer.src/M000029.html +24 -0
- data/doc/rdoc/classes/Rev/BufferedIO.html +397 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000095.html +23 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000096.html +16 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000097.html +16 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000098.html +16 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000099.html +18 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000100.html +18 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000101.html +23 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000102.html +18 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000103.html +20 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000104.html +24 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000105.html +23 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000106.html +22 -0
- data/doc/rdoc/classes/Rev/BufferedIO.src/M000107.html +29 -0
- data/doc/rdoc/classes/Rev/BufferedIO/Writer.html +154 -0
- data/doc/rdoc/classes/Rev/BufferedIO/Writer.src/M000108.html +19 -0
- data/doc/rdoc/classes/Rev/BufferedIO/Writer.src/M000109.html +18 -0
- data/doc/rdoc/classes/Rev/DNSResolver.html +401 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000124.html +25 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000125.html +29 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000126.html +20 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000127.html +19 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000128.html +16 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000129.html +16 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000131.html +19 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000132.html +21 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000133.html +27 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000134.html +28 -0
- data/doc/rdoc/classes/Rev/DNSResolver.src/M000135.html +55 -0
- data/doc/rdoc/classes/Rev/DNSResolver/Timeout.html +154 -0
- data/doc/rdoc/classes/Rev/DNSResolver/Timeout.src/M000136.html +20 -0
- data/doc/rdoc/classes/Rev/DNSResolver/Timeout.src/M000137.html +22 -0
- data/doc/rdoc/classes/Rev/HttpChunkHeader.html +156 -0
- data/doc/rdoc/classes/Rev/HttpChunkHeader.src/M000031.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.html +460 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000042.html +18 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000043.html +27 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000044.html +24 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000045.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000046.html +17 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000047.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000048.html +18 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000049.html +18 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000050.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000051.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000052.html +19 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000053.html +41 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000054.html +18 -0
- data/doc/rdoc/classes/Rev/HttpClient.src/M000055.html +34 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.html +310 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000009.html +20 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000010.html +20 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000011.html +18 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000012.html +18 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000013.html +18 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000014.html +19 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000015.html +18 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000016.html +18 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000017.html +22 -0
- data/doc/rdoc/classes/Rev/HttpEncoding.src/M000018.html +18 -0
- data/doc/rdoc/classes/Rev/HttpResponseHeader.html +219 -0
- data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000032.html +18 -0
- data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000033.html +18 -0
- data/doc/rdoc/classes/Rev/HttpResponseHeader.src/M000034.html +18 -0
- data/doc/rdoc/classes/Rev/IOWatcher.html +285 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000079.html +17 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000080.html +27 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000081.html +26 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000082.html +27 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000083.html +27 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000084.html +24 -0
- data/doc/rdoc/classes/Rev/IOWatcher.src/M000085.html +25 -0
- data/doc/rdoc/classes/Rev/Listener.html +207 -0
- data/doc/rdoc/classes/Rev/Listener.src/M000065.html +19 -0
- data/doc/rdoc/classes/Rev/Listener.src/M000066.html +19 -0
- data/doc/rdoc/classes/Rev/Listener.src/M000067.html +16 -0
- data/doc/rdoc/classes/Rev/Listener.src/M000068.html +18 -0
- data/doc/rdoc/classes/Rev/Loop.html +395 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000070.html +25 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000071.html +45 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000072.html +18 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000073.html +23 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000074.html +19 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000075.html +17 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000076.html +27 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000077.html +32 -0
- data/doc/rdoc/classes/Rev/Loop.src/M000078.html +32 -0
- data/doc/rdoc/classes/Rev/Server.html +164 -0
- data/doc/rdoc/classes/Rev/Server.src/M000121.html +32 -0
- data/doc/rdoc/classes/Rev/Server.src/M000122.html +20 -0
- data/doc/rdoc/classes/Rev/Socket.html +213 -0
- data/doc/rdoc/classes/Rev/Socket.src/M000035.html +21 -0
- data/doc/rdoc/classes/Rev/Socket.src/M000036.html +25 -0
- data/doc/rdoc/classes/Rev/Socket.src/M000037.html +16 -0
- data/doc/rdoc/classes/Rev/Socket.src/M000038.html +16 -0
- data/doc/rdoc/classes/Rev/Socket/Connector.html +154 -0
- data/doc/rdoc/classes/Rev/Socket/Connector.src/M000040.html +19 -0
- data/doc/rdoc/classes/Rev/Socket/Connector.src/M000041.html +28 -0
- data/doc/rdoc/classes/Rev/TCPListener.html +161 -0
- data/doc/rdoc/classes/Rev/TCPListener.src/M000069.html +23 -0
- data/doc/rdoc/classes/Rev/TCPServer.html +147 -0
- data/doc/rdoc/classes/Rev/TCPServer.src/M000123.html +20 -0
- data/doc/rdoc/classes/Rev/TCPSocket.html +233 -0
- data/doc/rdoc/classes/Rev/TCPSocket.src/M000056.html +20 -0
- data/doc/rdoc/classes/Rev/TCPSocket.src/M000057.html +34 -0
- data/doc/rdoc/classes/Rev/TCPSocket.src/M000058.html +24 -0
- data/doc/rdoc/classes/Rev/TCPSocket.src/M000059.html +18 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.html +171 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000060.html +19 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000061.html +27 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectResolver.src/M000062.html +23 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.html +154 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.src/M000063.html +25 -0
- data/doc/rdoc/classes/Rev/TCPSocket/TCPConnectSocket.src/M000064.html +23 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.html +288 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000086.html +17 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000087.html +27 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000088.html +26 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000089.html +27 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000090.html +27 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000091.html +42 -0
- data/doc/rdoc/classes/Rev/TimerWatcher.src/M000092.html +24 -0
- data/doc/rdoc/classes/Rev/UNIXListener.html +147 -0
- data/doc/rdoc/classes/Rev/UNIXListener.src/M000120.html +18 -0
- data/doc/rdoc/classes/Rev/UNIXServer.html +147 -0
- data/doc/rdoc/classes/Rev/UNIXServer.src/M000030.html +18 -0
- data/doc/rdoc/classes/Rev/UNIXSocket.html +175 -0
- data/doc/rdoc/classes/Rev/UNIXSocket.src/M000093.html +18 -0
- data/doc/rdoc/classes/Rev/UNIXSocket.src/M000094.html +21 -0
- data/doc/rdoc/classes/Rev/Watcher.html +349 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000110.html +20 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000111.html +20 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000112.html +17 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000113.html +48 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000114.html +62 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000115.html +34 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000116.html +34 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000117.html +27 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000118.html +24 -0
- data/doc/rdoc/classes/Rev/Watcher.src/M000119.html +27 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/LICENSE.html +165 -0
- data/doc/rdoc/files/README.html +297 -0
- data/doc/rdoc/files/ext/rev/rev_buffer_c.html +101 -0
- data/doc/rdoc/files/ext/rev/rev_ext_c.html +101 -0
- data/doc/rdoc/files/ext/rev/rev_io_watcher_c.html +101 -0
- data/doc/rdoc/files/ext/rev/rev_loop_c.html +101 -0
- data/doc/rdoc/files/ext/rev/rev_timer_watcher_c.html +101 -0
- data/doc/rdoc/files/ext/rev/rev_watcher_c.html +101 -0
- data/doc/rdoc/files/lib/rev/buffered_io_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/dns_resolver_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/http_client_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/io_watcher_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/listener_rb.html +108 -0
- data/doc/rdoc/files/lib/rev/loop_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/server_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/socket_rb.html +109 -0
- data/doc/rdoc/files/lib/rev/timer_watcher_rb.html +101 -0
- data/doc/rdoc/files/lib/rev/watcher_rb.html +101 -0
- data/doc/rdoc/files/lib/rev_rb.html +101 -0
- data/doc/rdoc/fr_class_index.html +52 -0
- data/doc/rdoc/fr_file_index.html +45 -0
- data/doc/rdoc/fr_method_index.html +163 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +208 -0
- data/ext/rev/extconf.rb +1 -1
- data/ext/rev/rev.h +0 -1
- data/ext/rev/rev_buffer.c +606 -0
- data/ext/rev/rev_ext.c +1 -0
- data/ext/rev/rev_io_watcher.c +53 -19
- data/ext/rev/rev_loop.c +12 -35
- data/ext/rev/rev_timer_watcher.c +45 -3
- data/ext/rev/rev_watcher.c +13 -1
- data/lib/http11_client.bundle +0 -0
- data/lib/rev.rb +1 -1
- data/lib/rev/buffered_io.rb +25 -22
- data/lib/rev/dns_resolver.rb +31 -14
- data/lib/rev/http_client.rb +88 -91
- data/lib/rev/listener.rb +22 -5
- data/lib/rev/loop.rb +13 -0
- data/lib/rev/server.rb +10 -3
- data/lib/rev/socket.rb +30 -9
- data/lib/rev/watcher.rb +4 -2
- data/lib/rev_ext.bundle +0 -0
- 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
|
|
82
|
-
|
|
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 "
|
|
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
|
-
|
|
97
|
-
Rev::
|
|
95
|
+
server = Rev::TCPServer.new('localhost', PORT, EchoServerConnection)
|
|
96
|
+
server.attach(Rev::Loop.default)
|
|
98
97
|
|
|
99
|
-
puts "Echo server listening on
|
|
100
|
-
|
|
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>‘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‘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>
|
|
166
|
+
<a href="#M000001">parse_header</a>
|
|
167
|
+
<a href="#M000002">parse_response_header</a>
|
|
168
|
+
<a href="#M000007">process_body</a>
|
|
169
|
+
<a href="#M000004">process_chunk_body</a>
|
|
170
|
+
<a href="#M000005">process_chunk_footer</a>
|
|
171
|
+
<a href="#M000006">process_response_footer</a>
|
|
172
|
+
<a href="#M000008">version</a>
|
|
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("%d.%d", ev_version_major(), ev_version_minor())</td>
|
|
223
|
+
<td width="3em"> </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>
|