void ScanHelper_initOnLoad(Handle<Object> target) {
  Persistent<Object> scanObj = Persistent<Object>(Object::New());
  Persistent<String> scanKey = Persistent<String>(String::NewSymbol("Scan"));
  target->Set(scanKey, scanObj);

  DEFINE_JS_FUNCTION(scanObj, "create", DBScanHelper_wrapper);

  Persistent<Object> ScanHelper = Persistent<Object>(Object::New());
  Persistent<Object> ScanFlags = Persistent<Object>(Object::New());
  
  scanObj->Set(Persistent<String>(String::NewSymbol("helper")), ScanHelper);
  scanObj->Set(Persistent<String>(String::NewSymbol("flags")), ScanFlags);

  WRAP_CONSTANT(ScanFlags, SF_TupScan);
  WRAP_CONSTANT(ScanFlags, SF_DiskScan);
  WRAP_CONSTANT(ScanFlags, SF_OrderBy);
  WRAP_CONSTANT(ScanFlags, SF_OrderByFull);
  WRAP_CONSTANT(ScanFlags, SF_Descending);
  WRAP_CONSTANT(ScanFlags, SF_ReadRangeNo);
  WRAP_CONSTANT(ScanFlags, SF_MultiRange);
  WRAP_CONSTANT(ScanFlags, SF_KeyInfo);
  
  DEFINE_JS_INT(ScanHelper, "table_record", SCAN_TABLE_RECORD);
  DEFINE_JS_INT(ScanHelper, "index_record", SCAN_INDEX_RECORD);
  DEFINE_JS_INT(ScanHelper, "lock_mode", SCAN_LOCK_MODE);
  DEFINE_JS_INT(ScanHelper, "bounds", SCAN_BOUNDS);
  DEFINE_JS_INT(ScanHelper, "flags", SCAN_OPTION_FLAGS);
  DEFINE_JS_INT(ScanHelper, "batch_size", SCAN_OPTION_BATCH_SIZE);
  DEFINE_JS_INT(ScanHelper, "parallel", SCAN_OPTION_PARALLELISM);
  DEFINE_JS_INT(ScanHelper, "filter_code", SCAN_FILTER_CODE);
}
void Init (Handle<Object> target) {
  
  initQueues();
  freeThreadsQueue= nuQueue(-3); //闲置线程队列的 id为 -3
  freeJobsQueue= nuQueue(-4); //闲置任务队列的id 为-4
  
  HandleScope scope;
  
  //static bool   IsActive ()
  //将返回当前V8的运行实例是否加锁
  useLocker= v8::Locker::IsActive(); 
  

  target->Set(String::NewSymbol("create"), FunctionTemplate::New(Create)->GetFunction());
  target->Set(String::NewSymbol("createPool"), Script::Compile(String::New(kCreatePool_js))->Run()->ToObject());
  //target->Set(String::NewSymbol("JASON"), Script::Compile(String::New(kJASON_js))->Run()->ToObject());
  
  //设置js访问线程id的属性名为‘id’
  id_symbol= Persistent<String>::New(String::NewSymbol("id"));
  
  //定义 threadTemplate 的一些属性
  threadTemplate= Persistent<ObjectTemplate>::New(ObjectTemplate::New());
  threadTemplate->SetInternalFieldCount(1);
  threadTemplate->Set(id_symbol, Integer::New(0));
  threadTemplate->Set(String::NewSymbol("eval"), FunctionTemplate::New(Eval));
  //threadTemplate->Set(String::NewSymbol("load"), FunctionTemplate::New(Load));
  threadTemplate->Set(String::NewSymbol("emit"), FunctionTemplate::New(processEmit));
  threadTemplate->Set(String::NewSymbol("destroy"), FunctionTemplate::New(Destroy));
}
예제 #3
0
extern "C" Handle<Value> makeException(Persistent<Context> context, Handle<Array> array) {
    HandleScope handle_scope;
    Context::Scope context_scope(context);
    Persistent<Object> exception = Persistent<Object>::New(Object::New());
    exception->Set(String::New("Message"), String::New("An F# exception occurred"));
    exception->Set(String::New("Values"), array);
    Persistent<Value> result = Persistent<Value>::New(exception);
    return result;
}
예제 #4
0
파일: global.cpp 프로젝트: amigrave/SilkJS
void init_global_object () {
    globalObject = Persistent<ObjectTemplate>::New(ObjectTemplate::New());
    builtinObject = Persistent<ObjectTemplate>::New(ObjectTemplate::New());

    init_buffer_object();
    init_console_object();
    init_process_object();
    init_net_object();
    init_http_object();
    init_fs_object();
    init_v8_object();
    init_popen_object();
    init_async_object();
    init_time_object();

#if !BOOTSTRAP_SILKJS
    init_logfile_object();
    init_sem_object();
    init_mysql_object();
    init_sqlite3_object();
    init_memcached_object();
    init_gd_object();
    init_ncurses_object();
    init_curl_object();
    init_xhrHelper_object();
    init_ssh_object();
    init_sftp_object();
    init_ftp_object();
    init_editline_object();
    init_cairo_object();
    init_expat_object();
#endif
    globalObject->Set(String::New("builtin"), builtinObject);
    globalObject->Set(String::New("log"), FunctionTemplate::New(Log));
    globalObject->Set(String::New("print"), FunctionTemplate::New(Print));
    globalObject->Set(String::New("println"), FunctionTemplate::New(Println));
    globalObject->Set(String::New("include"), FunctionTemplate::New(Include));
    globalObject->Set(String::New("loadDll"), FunctionTemplate::New(LoadLibrary));
}
예제 #5
0
void IndexBound_initOnLoad(Handle<Object> target) {
    Persistent<Object> ibObj = Persistent<Object>(Object::New());
    Persistent<String> ibKey = Persistent<String>(String::NewSymbol("IndexBound"));
    target->Set(ibKey, ibObj);

    DEFINE_JS_FUNCTION(ibObj, "create", newIndexBound);

    Persistent<Object> BoundHelper = Persistent<Object>(Object::New());
    ibObj->Set(Persistent<String>(String::NewSymbol("helper")), BoundHelper);

    DEFINE_JS_INT(BoundHelper, "low_key", BOUND_LOW_KEY);
    DEFINE_JS_INT(BoundHelper, "low_key_count", BOUND_LOW_KEY_COUNT);
    DEFINE_JS_INT(BoundHelper, "low_inclusive", BOUND_LOW_INCLUSIVE);
    DEFINE_JS_INT(BoundHelper, "high_key", BOUND_HIGH_KEY);
    DEFINE_JS_INT(BoundHelper, "high_key_count", BOUND_HIGH_KEY_COUNT);
    DEFINE_JS_INT(BoundHelper, "high_inclusive", BOUND_HIGH_INCLUSIVE);
    DEFINE_JS_INT(BoundHelper, "range_no", BOUND_RANGE_NO);
}
static Handle<Value> TitaniumCountlyAndroidMessaging_getBinding(const Arguments& args)
{
	HandleScope scope;

	if (args.Length() == 0) {
		return ThrowException(Exception::Error(String::New("TitaniumCountlyAndroidMessaging.getBinding requires 1 argument: binding")));
	}

	if (bindingCache.IsEmpty()) {
		bindingCache = Persistent<Object>::New(Object::New());
	}

	Handle<String> binding = args[0]->ToString();

	if (bindingCache->Has(binding)) {
		return bindingCache->Get(binding);
	}

	String::Utf8Value bindingValue(binding);

	LOGD(TAG, "Looking up binding: %s", *bindingValue);

	titanium::bindings::BindEntry *extBinding = ::TitaniumCountlyAndroidMessagingBindings::lookupGeneratedInit(
		*bindingValue, bindingValue.length());

	if (!extBinding) {
		LOGE(TAG, "Couldn't find binding: %s, returning undefined", *bindingValue);
		return Undefined();
	}

	Handle<Object> exports = Object::New();
	extBinding->bind(exports);
	bindingCache->Set(binding, exports);

	return exports;
}