lib/rhack/frame.rb in rhack-1.3.5 vs lib/rhack/frame.rb in rhack-1.3.6

- old
+ new

@@ -113,13 +113,12 @@ # использование данных из result производится # либо в &callback (functional), # либо использованием результата #run (imperative) # в первом случае в целях сборки мусора будет возвращён # @ :result : враппер результата исполнения; по умолчанию Page, для Client — если определён — <Class>::Result; при асинхронном вызове будет возвращён незамедлительно - # @ &callback : в него будет передан инстанс result, а его результат будет записан в <result>.res (по умолчанию это ссылка на <result>); в целях сборки мусора, если &callback задан, #run возвращает #res для каждого инстанса result вместо самого инстанса + # @ &callback : в него будет передан инстанс result, а его результат будет записан в <result>.res (по умолчанию это ссылка на <result>); в целях сборки мусора, если &callback задан, #run возвращает #res для каждого инстанса result вместо самого инстанса; соответственно, если возвращаемые &callback'ом значения в дальнейшем не нужны, им следует быть nil # @ :complete : при вызове нескольких реквестов, в него будет передан [ <result>.res, ... ] от каждого из них, при вызове единичного — <result>.res от него - # @ :complete : в него будет передан [ <result>.res, ... ] относительно всех реквестов, когда все # @ :raw : сохраняем в #res *только* тело ответа — без хедеров, без отладочной инфы # # @ [deprecated] :save_result : подразумевает callback=Proc::SELF; если не задан :proc_result, то подразумевает wait=true # @ [deprecated] :proc_result : Proc, в который будет передан result#res, если задан также &callback; если =nil, то подразумевает wait=true # @@ -430,11 +429,12 @@ Curl.execute :raise_errors end if opts[:wait] opts[:thread_safe] ? Curl.carier.perform : Curl.wait (callback or opts[:raw] or :proc_result.in opts) ? page.res : page - else page + else + page # promise end end def exec_many(orders, with_opts, &callback) w = with_opts.delete :wait @@ -464,13 +464,17 @@ # если ss.next будет не хватать скаутов, то он сам запустит курл # правда, это с :thread_safe никак не вяжется pages = orders.send(iterator) {|order| exec_one order, with_opts, &callback} end unless w and with_opts[:thread_safe] or opts[:exec] == false - Curl.execute :unless_already + Curl.execute :raise_errors end - with_opts[:thread_safe] ? Curl.carier.perform : Curl.wait if w - with_opts[:stream] || pages + if w + with_opts[:thread_safe] ? Curl.carier.perform : Curl.wait + (callback or with_opts[:raw] or :proc_result.in with_opts) ? pages.ress : pages + else + with_opts[:stream] || pages + end end end end \ No newline at end of file