Ejemplo n.º 1
0
        public void SendEvent(string name, Object[] vars)
        {
            Console.WriteLine("SendEvent {0}", name);
            Type      t     = typeof(T);
            EventInfo eInfo = t.GetEvent(name);

            if (eInfo != null)
            {
                IntPtr[] msgs = NativeHelper.CreateMessages(vars);
                NativeHelper.Server_SendSignal(_nativeServer.Value, name, msgs, msgs.Length);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Calls a method by name
        /// </summary>
        /// <param name="name">The name of the method to call</param>
        /// <param name="vars">All the parameters that will be sent</param>
        public Object[] CallMethod(string name, object[] vars)
        {
            Console.WriteLine("Method name = {0}", name);
            Type       type  = typeof(T);
            MethodInfo mInfo = type.GetMethod(name);

            if (mInfo != null)
            {
                ParameterInfo[] sig = mInfo.GetParameters();
                for (int i = 0; i < vars.Length; i++)
                {
                    if (sig[i].ParameterType != vars[i].GetType())
                    {
                        string s = "Expected : " + sig[i].ParameterType.Name + " got : " + vars[i].GetType().Name;
                        throw new ApplicationException(s);
                    }
                }

                IntPtr[] msgs    = NativeHelper.CreateMessages(vars);
                IntPtr   message = NativeHelper.Client_CallMethod(_nativeClient.Value, name, msgs, msgs.Length);
                if (message != IntPtr.Zero)
                {
                    string   signature  = NativeHelper.MessageSignature(message);
                    Object[] replyValue = new Object[signature.Length];
                    if (signature.Length > 0)
                    {
                        NativeHelper.extractValues(replyValue, message, signature);
                        Console.WriteLine("Value received : {0}", replyValue);
                    }
                    return(replyValue);
                }
                else
                {
                    Console.WriteLine("Nothing was returned");
                }
            }
            return(null);
        }