void DBOperationHelper_NonVO(Handle<Object> spec, KeyOperation & op) { HandleScope scope; Local<Value> v; Local<Object> o; setKeysInOp(spec, op); v = spec->Get(HELPER_ROW_BUFFER); if(! v->IsNull()) { o = v->ToObject(); op.row_buffer = V8BINDER_UNWRAP_BUFFER(o); } v = spec->Get(HELPER_ROW_RECORD); if(! v->IsNull()) { o = v->ToObject(); const Record * record = unwrapPointer<const Record *>(o); op.row_record = record; v = spec->Get(HELPER_BLOBS); if(v->IsObject()) { if(op.opcode == 1) { op.nblobs = op.createBlobReadHandles(record); } else { op.nblobs = op.createBlobWriteHandles(v->ToObject(), record); } } } v = spec->Get(HELPER_LOCK_MODE); if(! v->IsNull()) { int intLockMode = v->Int32Value(); op.lmode = static_cast<NdbOperation::LockMode>(intLockMode); } v = spec->Get(HELPER_COLUMN_MASK); if(! v->IsNull()) { Array *maskArray = Array::Cast(*v); for(unsigned int m = 0 ; m < maskArray->Length() ; m++) { Local<Value> colId = maskArray->Get(m); op.useColumn(colId->Int32Value()); } } DEBUG_PRINT("Non-VO %s -- mask: %u lobs: %d", op.getOperationName(), op.u.maskvalue, op.nblobs); }
void setKeysInOp(Handle<Object> spec, Operation & op) { HandleScope scope; Local<Value> v; Local<Object> o; v = spec->Get(HELPER_KEY_BUFFER); if(! v->IsNull()) { o = v->ToObject(); op.key_buffer = V8BINDER_UNWRAP_BUFFER(o); } v = spec->Get(HELPER_KEY_RECORD); if(! v->IsNull()) { o = v->ToObject(); op.key_record = unwrapPointer<const Record *>(o); } }
Handle<Value> DBOperationHelper_NonVO(const Arguments &args) { HandleScope scope; Operation op; const Local<Object> spec = args[0]->ToObject(); Local<Value> v; Local<Object> o; setKeysInOp(spec, op); v = spec->Get(HELPER_ROW_BUFFER); if(! v->IsNull()) { o = v->ToObject(); op.row_buffer = V8BINDER_UNWRAP_BUFFER(o); } v = spec->Get(HELPER_ROW_RECORD); if(! v->IsNull()) { o = v->ToObject(); op.row_record = unwrapPointer<const Record *>(o); } v = spec->Get(HELPER_LOCK_MODE); if(! v->IsNull()) { int intLockMode = v->Int32Value(); op.lmode = static_cast<NdbOperation::LockMode>(intLockMode); } v = spec->Get(HELPER_COLUMN_MASK); if(! v->IsNull()) { Array *maskArray = Array::Cast(*v); for(unsigned int m = 0 ; m < maskArray->Length() ; m++) { Local<Value> colId = maskArray->Get(m); op.useColumn(colId->Int32Value()); } } int opcode = args[1]->Int32Value(); NdbTransaction *tx = unwrapPointer<NdbTransaction *>(args[2]->ToObject()); DEBUG_PRINT("Non-VO opcode: %d mask: %u", opcode, op.u.maskvalue); return scope.Close(buildNdbOperation(op, opcode, tx)); }