Exemple #1
0
 /// <summary>
 /// Dispatches a JavaScript function to the main thread
 /// </summary>
 /// <param name="ptr">The function pointer</param>
 /// <param name="args">The arguments to pass to the function</param>
 /// <param name="deleteAfterExec">Whether or not this pointer should be deleted after the function has been called</param>
 public void DispatchFunction(JSFunctionPtr ptr,bool deleteAfterExec, params object[] args)
 {
     JSMarshaller marshal = new JSMarshaller();
     marshal.args = args;
     marshal.DeleteAfterExecution = deleteAfterExec;
     marshal.ptr = ptr;
     interruptfunctions.Add(marshal);
     mvent.Set();
 }
Exemple #2
0
 /// <summary>
 /// OPCODE 9
 /// </summary>
 /// <param name="funcptr"></param>
 static void onKeyUp(JSFunctionPtr funcptr)
 {
     dgate_keyup = funcptr;
 }
Exemple #3
0
 /// <summary>
 /// OPCODE 8
 /// </summary>
 /// <param name="funcptr"></param>
 static void onKeyPress(JSFunctionPtr funcptr)
 {
     dgate_keydown = funcptr;
 }
Exemple #4
0
 IntPtr setRecvDgate(int len, IntPtr args)
 {
     if (recvDgate != null)
     {
         vm.DisposeFunctionPtr(recvDgate);
         recvDgate = null;
     }
     recvDgate = vm.Deserialize(len, args)[0] as JSFunctionPtr;
     return IntPtr.Zero;
 }
Exemple #5
0
 public void InvokeMethod(JSFunctionPtr functionPtr,Kernel kernel, object[] args)
 {
     CallFunction(inst, SerializeDirect(kernel, args), functionPtr.value);
 }
Exemple #6
0
 public void DisposeFunctionPtr(JSFunctionPtr ptr)
 {
     __CloseFuncPtr(inst,ptr.value);
 }
Exemple #7
0
        object DeserializeManaged(Stream data)
        {
            BinaryReader mreader = new BinaryReader(data);
            object baseobj = null;
            byte opcode = mreader.ReadByte();
            if (opcode == 0)
            {
                int count = mreader.ReadInt32();
                Dictionary<string, object> mstr = new Dictionary<string, object>();
                for (int i = 0; i < count; i++)
                {
                    int clen = mreader.ReadInt32();
                    mstr.Add(Encoding.UTF8.GetString(mreader.ReadBytes(clen)), DeserializeManaged(data));
                }
                baseobj = mstr;
            }
            if (opcode == 1)
            {
                baseobj = new object[mreader.ReadUInt32()];
                for (int i = 0; i < (baseobj as object[]).Length; i++)
                {
                    (baseobj as object[])[i] = DeserializeManaged(data);
                }

            }
            if (opcode == 2)
            {
                baseobj = mreader.ReadInt32();
            }
            if (opcode == 3)
            {
                baseobj = Encoding.UTF8.GetString(mreader.ReadBytes(mreader.ReadInt32()));
            }
            if (opcode == 4)
            {
                baseobj = new JSFunctionPtr(mreader.ReadInt32());
            }
            if (opcode == 5)
            {
                baseobj = mreader.ReadDouble();
            }
            return baseobj;
        }