public void _OnScriptingAfterDeserialize() { if (_onAfterDeserializeValid) { if (_properties == null) { _properties = new JSScriptProperties(); } var buffer = new IO.ByteBuffer(_properties.genericValueData); unsafe { var argv = stackalloc[] { Binding.Values.js_push_classvalue(_ctx, _properties), Binding.Values.js_push_classvalue(_ctx, buffer) }; var rval = JSApi.JS_Call(_ctx, _onAfterDeserializeFunc, _this_obj, 2, argv); JSApi.JS_FreeValue(_ctx, argv[0]); JSApi.JS_FreeValue(_ctx, argv[1]); if (rval.IsException()) { _ctx.print_exception(); } else { JSApi.JS_FreeValue(_ctx, rval); } } } }
public static unsafe JSValue js_push_classvalue(JSContext ctx, IO.ByteBuffer o) { if (o == null) { return(JSApi.JS_UNDEFINED); } fixed(byte *buf = o.data) { return(JSApi.JS_NewArrayBufferCopy(ctx, buf, o.readableBytes)); } }
public void SetGenericValue(IO.ByteBuffer buffer) { if (buffer != null) { if (genericValueData == null) { genericValueData = new byte[buffer.readableBytes]; buffer.ReadBytes(genericValueData, 0, buffer.readableBytes); } else { if (genericValueData.Length < buffer.readableBytes) { Array.Resize(ref genericValueData, buffer.readableBytes); } buffer.ReadBytes(genericValueData, 0, buffer.readableBytes); } } }