Обратный вызов соединения очереди потока Luvit не работает - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь использовать ультрафиолетовый рабочий поток в Luvit для какого-то внешнего вызова, который обычно блокирует.Из-за этого я пытаюсь использовать именованные каналы для сериализации результата работника потока ... и вот что не работает: обратный вызов соединения клиента, кажется, не вызывается, хотя из напечатанных сообщений вызывается обратный вызов прослушивания сервера.

Для краткости я представляю аналогичный пример на основе синхронизирующего излучателя для имитации событий:

local uv=require("uv")
local Emitter=require("core").Emitter
local thread=require("thread")
local timer = require("timer")

local beacon=Emitter:new()


timer.setInterval(500,function()
beacon:emit("emit")
end)

local work = thread.work(function(mess)
  local uv = require("uv")
  local pipewrite=function(mess)
    local SOCK = "\\\\.\\pipe\\echo.sock"
    local client = uv.new_pipe(false)
    local connect_cb=function(err)
      assert(not err, err)
      thisisnotthecommandyourelookingfor()
      p("connecting")
      client:write(mess)
    end
    client:connect(SOCK,connect_cb)
  end
  pipewrite(mess)
end,function() end)

beacon:on('emit',function()
  p("emitting")
  thread.queue(work,"emmited")
end)

local SOCK = "\\\\.\\pipe\\echo.sock"
local server = uv.new_pipe(false)
local ret, err, code = server:bind(SOCK)
-- if file already exists, remove it first and try again
if not ret and code == "EADDRINUSE" then
  local fs = require("fs")
  fs.unlinkSync(SOCK)
  _, err, _ = server:bind(SOCK)
  assert(not err, err)
else
  assert(not err, err)
end

server:listen(128, function (err)
  assert(not err, err)
  local client = uv.new_pipe(false)
  server:accept(client)
  p("connected")
  client:read_start(function (err, chunk)
    assert(not err, err)
    if chunk then
      print("Got: " .. chunk)
      -- client:write(chunk)
    else
      client:shutdown()
      client:close()
    end
  end)
end)


uv.run()

Кто-нибудь почему-то не печатает сообщение connection и ошибок нетиз это не команда для поиска () несуществующей функции?:)

Спасибо

...