Fri, 31 Aug 2007 23:47:55 -0400
Moved lua source into its own directory.
15
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
1 | --[[ |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
2 | LuaEvent - Copyright (C) 2007 Thomas Harning <harningt@gmail.com> |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
3 | Licensed as LGPL - See doc/COPYING for details. |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
4 | ]] |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
5 | module("luaevent", package.seeall) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
6 | require("luaevent.core") |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
7 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
8 | local EV_READ = luaevent.core.EV_READ |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
9 | local EV_WRITE = luaevent.core.EV_WRITE |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
10 | local fair = false -- Not recommended for most cases... |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
11 | local base = luaevent.core.new() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
12 | local sockMap = setmetatable({}, {'__mode', 'kv'}) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
13 | local function addevent(sock, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
14 | local item = base:addevent(sock, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
15 | if not item then print("FAILED TO SETUP ITEM") return item end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
16 | local fd = sock:getfd() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
17 | sockMap[item] = fd |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
18 | print("SETUP ITEM FOR: ", fd) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
19 | if not hookedObjectMt then |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
20 | hookedObjectMt = true |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
21 | --[[ |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
22 | local mt = debug.getmetatable(item) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
23 | local oldGC = mt.__gc |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
24 | mt.__gc = function(...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
25 | print("RELEASING ITEM FOR: ", sockMap[(...)]) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
26 | return oldGC(...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
27 | end]] |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
28 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
29 | return item |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
30 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
31 | -- Weak keys.. the keys are the client sockets |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
32 | local clientTable = setmetatable({}, {'__mode', 'kv'}) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
33 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
34 | local function getWrapper() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
35 | local running = coroutine.running() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
36 | return function(...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
37 | if coroutine.running() == running then return end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
38 | return select(2, coroutine.resume(running, ...)) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
39 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
40 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
41 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
42 | function send(sock, data, start, stop) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
43 | local s, err |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
44 | local from = start or 1 |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
45 | local sent = 0 |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
46 | repeat |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
47 | from = from + sent |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
48 | s, err, sent = sock:send(data, from, stop) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
49 | -- Add extra coro swap for fairness |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
50 | -- CURRENTLY DISABLED FOR TESTING...... |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
51 | if fair and math.random(100) > 90 then |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
52 | if not clientTable[sock] then clientTable[sock] = addevent(sock, EV_WRITE, getWrapper()) end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
53 | coroutine.yield(EV_WRITE) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
54 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
55 | if s or err ~= "timeout" then return s, err, sent end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
56 | if not clientTable[sock] then clientTable[sock] = addevent(sock, EV_WRITE, getWrapper()) end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
57 | coroutine.yield(EV_WRITE) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
58 | until false |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
59 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
60 | function receive(sock, pattern, part) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
61 | local s, err |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
62 | pattern = pattern or '*l' |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
63 | repeat |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
64 | s, err, part = sock:receive(pattern, part) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
65 | if s or err ~= "timeout" then return s, err, part end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
66 | if not clientTable[sock] then clientTable[sock] = addevent(sock, EV_READ, getWrapper()) end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
67 | coroutine.yield(EV_READ) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
68 | until false |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
69 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
70 | -- same as above but with special treatment when reading chunks, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
71 | -- unblocks on any data received. |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
72 | function receivePartial(client, pattern) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
73 | local s, err, part |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
74 | pattern = pattern or "*l" |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
75 | repeat |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
76 | s, err, part = client:receive(pattern) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
77 | if s or ( (type(pattern)=="number") and part~="" and part ~=nil ) or |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
78 | err ~= "timeout" then return s, err, part end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
79 | if not clientTable[sock] then clientTable[sock] = addevent(sock, EV_READ, getWrapper()) end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
80 | coroutine.yield(EV_READ) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
81 | until false |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
82 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
83 | function connect(sock, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
84 | sock:settimeout(0) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
85 | local ret, err = sock:connect(...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
86 | if ret or err ~= "timeout" then return ret, err end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
87 | if not clientTable[sock] then clientTable[sock] = addevent(sock, EV_WRITE, getWrapper()) end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
88 | coroutine.yield(EV_WRITE) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
89 | ret, err = sock:connect(...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
90 | if err == "already connected" then |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
91 | return 1 |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
92 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
93 | return ret, err |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
94 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
95 | -- Deprecated.. |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
96 | function flush(sock) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
97 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
98 | local function clientCoroutine(sock, handler) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
99 | -- Figure out what to do ...... |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
100 | return handler(sock) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
101 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
102 | local function handleClient(co, client, handler) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
103 | local ok, res, event = coroutine.resume(co, client, handler) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
104 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
105 | local function serverCoroutine(sock, callback) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
106 | local listenItem = addevent(sock, EV_READ, getWrapper()) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
107 | repeat |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
108 | local event = coroutine.yield(EV_READ) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
109 | -- Get new socket |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
110 | local client = sock:accept() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
111 | if client then |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
112 | client:settimeout(0) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
113 | local co = coroutine.create(clientCoroutine) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
114 | handleClient(co, client, callback) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
115 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
116 | until false |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
117 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
118 | function addserver(sock, callback) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
119 | local coro = coroutine.create(serverCoroutine) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
120 | assert(coroutine.resume(coro, sock, callback)) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
121 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
122 | function addthread(func, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
123 | return coroutine.resume(coroutine.create(func), ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
124 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
125 | local _skt_mt = {__index = { |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
126 | connect = function(self, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
127 | return connect(self.socket, ...) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
128 | end, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
129 | send = function (self, data) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
130 | return send(self.socket, data) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
131 | end, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
132 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
133 | receive = function (self, pattern) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
134 | if (self.timeout==0) then |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
135 | return receivePartial(self.socket, pattern) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
136 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
137 | return receive(self.socket, pattern) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
138 | end, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
139 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
140 | flush = function (self) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
141 | return flush(self.socket) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
142 | end, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
143 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
144 | settimeout = function (self,time) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
145 | self.timeout=time |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
146 | return |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
147 | end, |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
148 | |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
149 | close = function(self) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
150 | clientTable[self.socket]:close() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
151 | self.socket:close() |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
152 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
153 | }} |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
154 | function wrap(sock) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
155 | return setmetatable({socket = sock}, _skt_mt) |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
156 | end |
9b91d1bdbb40
Moved lua source into its own directory.
Thomas Harning Jr <harningt@gmail.com>
parents:
diff
changeset
|
157 | loop = function(...) base:loop(...) end |