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