summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/luv/examples/uvbook
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/luv/examples/uvbook')
-rw-r--r--3rdparty/luv/examples/uvbook/helloworld.lua5
-rw-r--r--3rdparty/luv/examples/uvbook/idle-basic.lua14
-rw-r--r--3rdparty/luv/examples/uvbook/onchange.lua30
-rw-r--r--3rdparty/luv/examples/uvbook/queue-work.lua19
-rw-r--r--3rdparty/luv/examples/uvbook/tcp-echo-client.lua21
-rw-r--r--3rdparty/luv/examples/uvbook/tcp-echo-server.lua22
-rw-r--r--3rdparty/luv/examples/uvbook/thread-create.lua38
-rw-r--r--3rdparty/luv/examples/uvbook/uvcat.lua37
-rw-r--r--3rdparty/luv/examples/uvbook/uvtee.lua35
9 files changed, 221 insertions, 0 deletions
diff --git a/3rdparty/luv/examples/uvbook/helloworld.lua b/3rdparty/luv/examples/uvbook/helloworld.lua
new file mode 100644
index 00000000000..2c77d0c51bc
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/helloworld.lua
@@ -0,0 +1,5 @@
+local uv = require('luv')
+
+print('Now quitting.')
+uv.run('default')
+uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/idle-basic.lua b/3rdparty/luv/examples/uvbook/idle-basic.lua
new file mode 100644
index 00000000000..dc2a47b3c30
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/idle-basic.lua
@@ -0,0 +1,14 @@
+local uv = require('luv')
+
+local counter = 0
+local idle = uv.new_idle()
+idle:start(function()
+ counter = counter + 1
+ if counter >= 10e6 then
+ idle:stop()
+ end
+end)
+
+print("Idling...")
+uv.run('default')
+uv.loop_close() \ No newline at end of file
diff --git a/3rdparty/luv/examples/uvbook/onchange.lua b/3rdparty/luv/examples/uvbook/onchange.lua
new file mode 100644
index 00000000000..07b3f9b1d78
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/onchange.lua
@@ -0,0 +1,30 @@
+local uv = require('luv')
+
+if #arg==0 then
+ print(string.format("Usage: %s <command> <file1> [file2 ...]",arg[0]));
+ return
+end
+
+for i=1,#arg do
+ local fse = uv.new_fs_event()
+ assert(uv.fs_event_start(fse,arg[i],{
+ --"watch_entry"=true,"stat"=true,
+ recursive=true
+ },function (err,fname,status)
+ if(err) then
+ print("Error "..err)
+ else
+ print(string.format('Change detected in %s',
+ uv.fs_event_getpath(fse)))
+ for k,v in pairs(status) do
+ print(k,v)
+ end
+ print('file changed:'..(fname and fname or ''))
+ end
+ end))
+
+end
+
+uv.run('default')
+uv.loop_close()
+
diff --git a/3rdparty/luv/examples/uvbook/queue-work.lua b/3rdparty/luv/examples/uvbook/queue-work.lua
new file mode 100644
index 00000000000..cf52abfb216
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/queue-work.lua
@@ -0,0 +1,19 @@
+local uv = require('luv')
+
+local ctx = uv.new_work(
+ function(n) --work,in threadpool
+ local uv = require('luv')
+ local t = uv.thread_self()
+ uv.sleep(100)
+ return n*n,n
+ end,
+ function(r,n) print(string.format('%d => %d',n,r)) end --after work, in loop thread
+)
+uv.queue_work(ctx,2)
+uv.queue_work(ctx,4)
+uv.queue_work(ctx,6)
+uv.queue_work(ctx,8)
+uv.queue_work(ctx,10)
+
+uv.run('default')
+uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/tcp-echo-client.lua b/3rdparty/luv/examples/uvbook/tcp-echo-client.lua
new file mode 100644
index 00000000000..40dd22a311f
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/tcp-echo-client.lua
@@ -0,0 +1,21 @@
+local uv = require('luv')
+
+
+local client = uv.new_tcp()
+uv.tcp_connect(client, "127.0.0.1", 1337, function (err)
+ assert(not err, err)
+ uv.read_start(client, function (err, chunk)
+ assert(not err, err)
+ if chunk then
+ print(chunk)
+ else
+ uv.close(client)
+ end
+ end)
+
+ uv.write(client, "Hello")
+ uv.write(client, "World")
+end)
+print('CTRL-C to break')
+uv.run('default')
+uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/tcp-echo-server.lua b/3rdparty/luv/examples/uvbook/tcp-echo-server.lua
new file mode 100644
index 00000000000..269c49114cf
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/tcp-echo-server.lua
@@ -0,0 +1,22 @@
+local uv = require('luv')
+
+
+local server = uv.new_tcp()
+server:bind("127.0.0.1", 1337)
+server:listen(128, function (err)
+ assert(not err, err)
+ local client = uv.new_tcp()
+ server:accept(client)
+ client:read_start(function (err, chunk)
+ assert(not err, err)
+ if chunk then
+ client:write(chunk)
+ else
+ client:shutdown()
+ client:close()
+ end
+ end)
+end)
+
+uv.run('default')
+uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/thread-create.lua b/3rdparty/luv/examples/uvbook/thread-create.lua
new file mode 100644
index 00000000000..4b42587adbf
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/thread-create.lua
@@ -0,0 +1,38 @@
+local uv = require('luv')
+
+local step = 10
+
+local hare_id = uv.new_thread(function(step,...)
+ local ffi = require'ffi'
+ local uv = require('luv')
+ local sleep
+ if ffi.os=='Windows' then
+ ffi.cdef "void Sleep(int ms);"
+ sleep = ffi.C.Sleep
+ else
+ ffi.cdef "unsigned int usleep(unsigned int seconds);"
+ sleep = ffi.C.usleep
+ end
+ while (step>0) do
+ step = step - 1
+ uv.sleep(math.random(1000))
+ print("Hare ran another step")
+ end
+ print("Hare done running!")
+end, step,true,'abcd','false')
+
+local tortoise_id = uv.new_thread(function(step,...)
+ local uv = require('luv')
+ while (step>0) do
+ step = step - 1
+ uv.sleep(math.random(100))
+ print("Tortoise ran another step")
+ end
+ print("Tortoise done running!")
+end,step,'abcd','false')
+
+print(hare_id==hare_id,uv.thread_equal(hare_id,hare_id))
+print(tortoise_id==hare_id,uv.thread_equal(tortoise_id,hare_id))
+
+uv.thread_join(hare_id)
+uv.thread_join(tortoise_id)
diff --git a/3rdparty/luv/examples/uvbook/uvcat.lua b/3rdparty/luv/examples/uvbook/uvcat.lua
new file mode 100644
index 00000000000..99fdd68000b
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/uvcat.lua
@@ -0,0 +1,37 @@
+local uv = require('luv')
+
+
+local fname = arg[1] and arg[1] or arg[0]
+
+uv.fs_open(fname, 'r', tonumber('644', 8), function(err,fd)
+ if err then
+ print("error opening file:"..err)
+ else
+ local stat = uv.fs_fstat(fd)
+ local off = 0
+ local block = 10
+
+ local function on_read(err,chunk)
+ if(err) then
+ print("Read error: "..err);
+ elseif #chunk==0 then
+ uv.fs_close(fd)
+ else
+ off = block + off
+ uv.fs_write(1,chunk,-1,function(err,chunk)
+ if err then
+ print("Write error: "..err)
+ else
+ uv.fs_read(fd, block, off, on_read)
+ end
+ end)
+ end
+ end
+ uv.fs_read(fd, block, off, on_read)
+ end
+end)
+
+
+
+uv.run('default')
+uv.loop_close()
diff --git a/3rdparty/luv/examples/uvbook/uvtee.lua b/3rdparty/luv/examples/uvbook/uvtee.lua
new file mode 100644
index 00000000000..c91b066ae21
--- /dev/null
+++ b/3rdparty/luv/examples/uvbook/uvtee.lua
@@ -0,0 +1,35 @@
+local uv = require('luv')
+
+if not arg[1] then
+ print(string.format("please run %s filename",arg[0]))
+ return
+end
+
+
+local stdin = uv.new_tty(0, true)
+local stdout = uv.new_tty(1, true)
+--local stdin_pipe = uv.new_pipe(false)
+--uv.pipe_open(stdin_pipe,0)
+
+local fname = arg[1]
+
+uv.fs_open(fname, 'w+', tonumber('644', 8), function(err,fd)
+ if err then
+ print("error opening file:"..err)
+ else
+ local fpipe = uv.new_pipe(false)
+ uv.pipe_open(fpipe, fd)
+
+ uv.read_start(stdin, function(err,chunk)
+ if err then
+ print('Read error: '..err)
+ else
+ uv.write(stdout,chunk)
+ uv.write(fpipe,chunk)
+ end
+ end);
+ end
+end)
+
+uv.run('default')
+uv.loop_close()