Variant ClientBase::call(ObjectID id, const string &name, const Variant &args, bool withResult, float timeout, FutureResultPtr &written) { if(asyncMode()) return asyncCall(id, name, args, withResult, timeout, written); return syncCall(id, name, args, withResult); }
void Isolate::Unref(int32_t hr) { if (s_iso_ref.dec() == 0) { Isolate* isolate = s_isolates.head(); isolate->m_hr = hr; syncCall(isolate, syncExit, isolate); } }
mysql::~mysql() { if (m_conn) { syncCall(close_conn, m_conn); m_conn = NULL; } }
MongoCursor::~MongoCursor() { m_query.Reset(); if (in_gc()) syncCall(close_cursor, m_cursor); else { mongo_cursor_destroy(m_cursor); delete m_cursor; } if (m_bInit) bson_destroy(&m_bbq); bson_destroy(&m_bbp); }
void main(int32_t argc, char *argv[]) { init(argc, argv); int32_t i; for (i = 1; (i < argc) && (argv[i][0] == '-'); i ++); const char *fname = NULL; if (i < argc) fname = argv[i]; Isolate* isolate = new Isolate(fname); syncCall(isolate, main_fiber, isolate); exlib::Service::dispatch(); }
void Worker::start() { m_event = new Event(); syncCall(m_isolate, worker_fiber, this); m_event->wait(); }
static void start_fiber(void* p) { MainThread* th = (MainThread*)p; Isolate* isolate = new Isolate(th->m_start); syncCall(isolate, th->m_main, isolate); }
void Isolate::RequestInterrupt(v8::InterruptCallback callback, void* data) { m_isolate->RequestInterrupt(callback, data); if (m_has_timer.CompareAndSwap(0, 1) == 0) syncCall(this, js_timer, this); }
virtual void resume() { syncCall(holder(), _callback, this); }