Skip to content

qrmoon/fiber

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fiber

wrapper around Lua coroutines for easier asynchronous programming

examples

basic example

local fiber = require "fiber"

local hello = fiber:new(function()
  while true do
    print "Hello"
    fiber.sleep(1)
  end
end)

local world = fiber:new(function()
  while true do
    print "World"
    fiber.sleep(2)
  end
end)

fiber.loop { hello, world }

asynchronous sockets

local fiber = require "fiber"
local socket = require "socket"

local fetcher = fiber:new(function()
  local sock = socket.connect("127.0.0.1", 5000)
  fiber.defer(sock.close, sock)
  sock:settimeout(0)
  sock:send "hello"

  local line, err
  fiber.wait_for(10, function()
    line, err = sock:receive "*l"
    return err ~= "timeout"
  end)
  print(line or err)
end)

local other = fiber:new(function()
  for i=1,1000 do
    print(i)
    fiber.sleep(1)
  end
end)

fiber.loop { fetcher, other }

About

Easier asynchronous programming for Lua

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages