Class: PGconn
- Inherits:
-
Object
- Object
- PGconn
- Defined in:
- lib/em-postgresql-sequel/pgconn.rb
Instance Method Summary collapse
Instance Method Details
#async_exec(sql, args = nil) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/em-postgresql-sequel/pgconn.rb', line 4 def async_exec(sql, args=nil) send_query(sql, args) deferrable = ::EM::DefaultDeferrable.new ::EM.watch(self.socket, EM::Sequel::Postgres::Watcher, self, deferrable).notify_readable = true f = Fiber.current deferrable.callback do |res| # puts "!!! callback: #{res}" # check for alive?, otherwise we probably resume a dead fiber, because someone has killed our session e.g. "select pg_terminate_backend('procpid');" f.resume(res) if f.alive? end deferrable.errback do |err| # puts "!!! errback: #{err}" # check for alive?, otherwise we probably resume a dead fiber, because someone has killed our session e.g. "select pg_terminate_backend('procpid');" f.resume(err) if f.alive? end Fiber.yield.tap do |result| raise result if result.is_a?(Exception) end end |