public void AddToAlive(MyProxy proxy)
 {
     lock (addLock) //IndexOutOfRangeException exception
     {
         Alive.Add(proxy);
     }
 }
예제 #2
0
        public void ExecuteMessage()
        {
            var        port = NetworkHelpers.FindFreePort();
            TcpChannel chn  = new TcpChannel(port);

            ChannelServices.RegisterChannel(chn);
            try {
                MarshalObject objMarshal = NewMarshalObject();
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall);

                // use a proxy to catch the Message
                MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalObject)Activator.GetObject(typeof(MarshalObject), $"tcp://localhost:{port}/" + objMarshal.Uri));

                MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy();

                objRem.Method1();

                // Tests RemotingServices.GetMethodBaseFromMethodMessage()
                Assert.AreEqual("Method1", proxy.MthBase.Name, "#A09");
                Assert.IsFalse(proxy.IsMethodOverloaded, "#A09.1");

                objRem.Method2();
                Assert.IsTrue(proxy.IsMethodOverloaded, "#A09.2");

                // Tests RemotingServices.ExecuteMessage();
                // If ExecuteMessage does it job well, Method1 should be called 2 times
                Assert.AreEqual(2, MarshalObject.Called, "#A10");
            } finally {
                ChannelServices.UnregisterChannel(chn);
            }
        }
예제 #3
0
        public void ExecuteMessage()
        {
            TcpChannel chn = new TcpChannel(1235);

            ChannelServices.RegisterChannel(chn);
            try {
                MarshalObject objMarshal = NewMarshalObject();
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall);

                // use a proxy to catch the Message
                MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalObject)Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri));

                MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy();

                objRem.Method1();

                // Tests RemotingServices.GetMethodBaseFromMethodMessage()
                AssertEquals("#A09", "Method1", proxy.MthBase.Name);
                Assert("#A09.1", !proxy.IsMethodOverloaded);

                objRem.Method2();
                Assert("#A09.2", proxy.IsMethodOverloaded);

                // Tests RemotingServices.ExecuteMessage();
                // If ExecuteMessage does it job well, Method1 should be called 2 times
                AssertEquals("#A10", 2, MarshalObject.Called);
            } finally {
                ChannelServices.UnregisterChannel(chn);
            }
        }
예제 #4
0
        public void GetRealProxy()
        {
            TcpChannel chn = null;

            try
            {
                chn = new TcpChannel(1241);
                ChannelServices.RegisterChannel(chn);

                RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton);

                MyProxy       proxy  = new  MyProxy(typeof(MarshalObject), (MarshalByRefObject)Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap"));
                MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy();

                RealProxy rp = RemotingServices.GetRealProxy(objRem);

                Assert.IsTrue(rp != null, "#A12");
                Assert.AreEqual("MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType().ToString(), "#A13");
            }
            finally
            {
                if (chn != null)
                {
                    ChannelServices.UnregisterChannel(chn);
                }
            }
        }
    public void Download(bool includeZeroBalances, DateTime toDate)
    {
        MyProxy proxy = GetProxy();

        byte[] file = proxy.GetFile(includeZeroBalance, toDate);
        PropertyBag["downloadurl"] = "data:application/zip;base64," + System.Convert.ToBase64String(file);
    }
예제 #6
0
        public void CreateProxy_CallAddMethod_AddsTwoIntegers()
        {
            var proxy     = new MyProxy();
            var realProxy = proxy.GetProxyObject();

            Assert.IsNotNull(realProxy);
            Assert.AreEqual(100, realProxy.Add(40, 60));
        }
    public static void Main()
    {
        MyProxy proxy = new MyProxy(typeof(Zip));
        Zip     myZip = (Zip)proxy.GetTransparentProxy();

        CallContext.SetData("USER", new Zip());
        myZip.Method1(6);
    }
예제 #8
0
        private async void Execute()
        {
            //DisplayAlert("TEST", param.ToString(), "OK");
            var p    = new MyProxy();
            var user = await p.GetUser(Model.ID);

            Model.UserName = user.Name;
        }
예제 #9
0
 public void AddProxy(MyProxy proxy)
 {
     if (ProxiesScraped.Add(proxy.ToString()))                                                //if added to hashset and not a duplicate
     {
         scrapedListBox.Invoke(new Action(() => scrapedListBox.Items.Add(proxy.ToString()))); //add to listbox UI
         UpdateScraperUI();
     }
 }
예제 #10
0
 public string GetMyNetwork()
 {
     if (String.IsNullOrWhiteSpace(network))
     {
         MyProxy myprox = MyProxy.Instance;
         network = myprox.GetNetworkConfig();
     }
     return(network);
 }
예제 #11
0
        private void importProxiesBtn_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Title       = "Proxies";
            ofd.Filter      = "Text Files|*.txt";
            ofd.Multiselect = true;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                ProxyMgr.Clear();
                uint badProxies       = 0;
                uint duplicateProxies = 0;
                uint dangerousProxies = 0;
                foreach (string file in ofd.FileNames)
                {
                    using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        using (StreamReader sr = new StreamReader(fs, Encoding.Default))
                        {
                            string proxy;
                            while ((proxy = sr.ReadLine()) != null)
                            {
                                MyProxy myProxy = new MyProxy(proxy, true);
                                if (myProxy.isMalformed)
                                {
                                    badProxies++;
                                }
                                else
                                {
                                    if (removeDangCheck.Checked)
                                    {
                                        if (filter.isDangerous(myProxy.ToString()))
                                        {
                                            dangerousProxies++;
                                            continue;
                                        }
                                    }
                                    if (!ProxyMgr.Add(myProxy.ToString())) //adding to hashset
                                    {
                                        duplicateProxies++;
                                    }
                                }
                            }
                        }
                }

                //Update UI
                EnableScanUI();

                MessageBox.Show(string.Format("A total of {0} Proxies have been imported for scanning.{1}{2}", ProxyMgr.Count.ToString(),
                                              (badProxies + duplicateProxies) > 0 ? string.Format("{0} - {1} bad proxies and {2} duplicates were removed!",
                                                                                                  Environment.NewLine, badProxies.ToString(), duplicateProxies.ToString()):"", dangerousProxies > 0? string.Concat(Environment.NewLine,
                                                                                                                                                                                                                   " - ", dangerousProxies.ToString(), " DANGEROUS Proxies were also removed!"):""),
                                "Import Proxies", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #12
0
파일: bug-544446.cs 프로젝트: Zman0169/mono
	static int Main () {
		MyProxy real_proxy = new MyProxy (new R1 ());
		R1 o = (R1)real_proxy.GetTransparentProxy ();

		Dictionary<string, int> i;
		o.foo (out i);
		if (1 == i["One"])
			return 0;
		return 1;
	}
예제 #13
0
        public void CreateProxy_WithProperty_GetsAndSetsProperty()
        {
            var proxy     = new MyProxy();
            var realProxy = proxy.GetProxyObject();

            Assert.IsNotNull(realProxy);

            realProxy.StringProperty = "Test";
            Assert.AreEqual("Test", realProxy.StringProperty);
        }
예제 #14
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Press key to test");
            Console.ReadKey();
            var p    = new MyProxy();
            var user = await p.GetUser("test");

            Console.WriteLine(user.Name);

            Console.ReadKey();
        }
예제 #15
0
        private void ImportProxiesBtn_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();

            ofd.Title       = "Proxies";
            ofd.Filter      = "Text Files|*.txt";
            ofd.Multiselect = true;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                ProxyMgr.Clear();
                uint badProxies       = 0;
                uint duplicateProxies = 0;
                uint dangerousProxies = 0;
                foreach (var file in ofd.FileNames)
                {
                    using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        using (var sr = new StreamReader(fs, Encoding.Default)) {
                            string proxy;
                            while ((proxy = sr.ReadLine()) != null)
                            {
                                var myProxy = new MyProxy(proxy, true);
                                if (myProxy.IsMalformed)
                                {
                                    badProxies++;
                                }
                                else
                                {
                                    if (removeDangCheck.Checked)
                                    {
                                        if (filter.IsDangerous(myProxy.ToString()))
                                        {
                                            dangerousProxies++;
                                            continue;
                                        }
                                    }
                                    if (!ProxyMgr.Add(myProxy.ToString())) //adding to hashset
                                    {
                                        duplicateProxies++;
                                    }
                                }
                            }
                        }
                }

                //Update UI
                EnableScanUI();

                MessageBox.Show(string.Concat($"A total of {ProxyMgr.Count} Proxies have been imported for scanning.",
                                              (badProxies + duplicateProxies) > 0 ? $"\n - {badProxies} bad proxies and {duplicateProxies} duplicates were removed!" : string.Empty,
                                              dangerousProxies > 0 ? $"\n - {dangerousProxies} DANGEROUS Proxies were also removed!" : string.Empty),
                                "Import Proxies", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
예제 #16
0
        public MyProxy RecommendProxy()
        {
            lock ( proxiesLock ) {
                if (Unscanned.Count == 0)
                {
                    return(null);
                }

                var proxy = new MyProxy(Unscanned.First(), false);
                Unscanned.RemoveFirst();
                return(proxy);
            }
        }
예제 #17
0
        public void CreateProxy_WithMethodContainingAReferenceOutParameter_ReturnsOutParameter()
        {
            var proxy     = new MyProxy();
            var realProxy = proxy.GetProxyObject();

            Assert.IsNotNull(realProxy);

            realProxy.StringProperty = "Test";
            var result = realProxy.TryGetStringProperty(out string value);

            Assert.IsTrue(result);
            Assert.AreEqual("Test", value);
        }
예제 #18
0
        public void TestCalls()
        {
            var proxy = new MyProxy() {NextRet = 5};
            var tproxy = ProxyGen.CreateInstance<ISimple>(proxy);
            tproxy.Bar();
            Assert.Equal(5, tproxy.Foo(1, "2"));
            Assert.Equal(2, proxy.Calls.Count);
            Assert.Equal(1, proxy.Calls[1].Arguments[0]);
            Assert.Equal("2", proxy.Calls[1].Arguments[1]);

            Assert.Equal("Bar", proxy.Calls[0].Method.Name);
            Assert.Equal("Foo", proxy.Calls[1].Method.Name);
        }
예제 #19
0
        public void CreateProxy_WithMethodContainingAValueOutParameter_ReturnsOutParameter()
        {
            var proxy     = new MyProxy();
            var realProxy = proxy.GetProxyObject();

            Assert.IsNotNull(realProxy);

            realProxy.BooleanProperty = true;
            var result = realProxy.TryGetBooleanProperty(out bool value);

            Assert.IsTrue(result);
            Assert.IsTrue(value);
        }
예제 #20
0
파일: remoting5.cs 프로젝트: Zman0169/mono
	public virtual int ldfield_test () {

		MyProxy real_proxy = new MyProxy (this);
		R1 o = (R1)real_proxy.GetTransparentProxy ();

		if (o.test_field != 1)
			return 1;

		if (test_field != 1)
			return 1;

		return 0;
	}
예제 #21
0
    static int Main()
    {
        MyProxy real_proxy = new MyProxy(new R1());
        R1      o          = (R1)real_proxy.GetTransparentProxy();

        Dictionary <string, int> i;

        o.foo(out i);
        if (1 == i["One"])
        {
            return(0);
        }
        return(1);
    }
 public override MarshalByRefObject CreateInstance(Type serverType)
 {
     if (serverType.IsMarshalByRef)
     {
         MarshalByRefObject targetObject =
             (MarshalByRefObject)Activator.CreateInstance(serverType);
         MyProxy proxy = new MyProxy(serverType, targetObject);
         return((MarshalByRefObject)proxy.GetTransparentProxy());
     }
     else
     {
         throw new Exception("Proxies only work on MarshalByRefObject objects" +
                             " and their children");
     }
 }
예제 #23
0
        private List <MyProxy> ProxiesFromHtml(string html)
        {
            var proxies = new List <MyProxy>();

            /////Remove everything that can mislead
            html = html.Trim().ToLowerInvariant();

            //Remove time stamps ex '11h 44m 56s'; are usually adjacent to proxies so removal is encouraged for best results
            //Start from big [60] to small [0] so we have no trailing digits, ex: '52s' removing '2s' first and we have a trailing 5
            var suffixes = new string[] { "s", "m", "h", "d" };

            for (var i = 60; i >= 0; --i)
            {
                for (var s = 0; s < suffixes.Length; ++s)
                {
                    html = html.Replace(string.Concat(i.ToString(), suffixes[s]), " ");
                }
            }
            html = Regex.Replace(html, @"<[^>]+>|&nbsp;", " ").Trim();   //remove any html <tag> or non-breaking spaces
            const string timeRegex = @"(\s\d{1,2}:\d{1,2}\s)|(\s\d{1,2}:\d{1,2}:\d{1,2}\s)";

            html = Regex.Replace(html, timeRegex, " ").Trim(); //remove time 00:00:00 or 00:00
            html = Regex.Replace(html, @"\s+", " ");           //remove extra spaces
            /////

            //Regex Cheat Sheet: https://www.mikesdotnetting.com/article/46/c-regular-expressions-cheat-sheet
            //[1-3 Digits] [.1-3 Digit]x3 :or_ [2-5 Digits] | Same shit but Port first
            const string    normalRegex = @"(\d{1,3}(\.\d{1,3}){3}(:|\s)\d{2,5})|(\d{2,5}(:|\s)\d{1,3}(\.\d{1,3}){3})";
            MatchCollection matches     = Regex.Matches(html, normalRegex, RegexOptions.IgnoreCase);

            foreach (Match match in matches)
            {
                var _proxy = match.ToString().Trim().Replace(" ", ":");
                var parts  = _proxy.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);

                //Assemble proxy! May be in two different configs ip:port or port:ip
                if (parts.Length == 2)
                {
                    var portIndex = parts[0].Contains(".") ? 1 : 0;
                    var ipIndex   = portIndex == 1 ? 0 : 1;
                    var proxy     = new MyProxy(parts[ipIndex], Convert.ToInt32(parts[portIndex]));
                    proxies.Add(proxy);
                }
            }

            return(proxies);
        }
    public override RealProxy CreateProxy(ObjRef objRef1,
                                          Type serverType,
                                          object serverObject,
                                          Context serverContext)
    {
        MyProxy myCustomProxy = new MyProxy(serverType);

        if (serverContext != null)
        {
            RealProxy.SetStubData(myCustomProxy, serverContext);
        }
        if ((!serverType.IsMarshalByRef) && (serverContext == null))
        {
            throw new RemotingException("Bad Type for CreateProxy");
        }
        return(myCustomProxy);
    }
예제 #25
0
        public void TestCalls()
        {
            var proxy = new MyProxy()
            {
                NextRet = 5
            };
            var tproxy = ProxyGen.CreateInstance <ISimple>(proxy);

            tproxy.Bar();
            Assert.Equal(5, tproxy.Foo(1, "2").Result);
            Assert.Equal(2, proxy.Calls.Count);
            Assert.Equal(1, proxy.Calls[1].Arguments[0]);
            Assert.Equal("2", proxy.Calls[1].Arguments[1]);

            Assert.Equal("Bar", proxy.Calls[0].Method.Name);
            Assert.Equal("Foo", proxy.Calls[1].Method.Name);
        }
    public virtual int ldfield_test()
    {
        MyProxy real_proxy = new MyProxy(this);
        R1      o          = (R1)real_proxy.GetTransparentProxy();

        if (o.test_field != 1)
        {
            return(1);
        }

        if (test_field != 1)
        {
            return(1);
        }

        return(0);
    }
예제 #27
0
        private async void Button_OnClicked(object sender, EventArgs e)
        {
            var p    = new MyProxy();
            var user = await p.GetUser("test");

            Model = new MainPageModel
            {
                UserName = user.Name
            };

            //DisplayAlert("TEST", "TEST222222222222222", "OK");


            //using (var db = new LiteDatabase(@"MyData.db"))
            //{
            //    // Get customer collection
            //    var col = db.GetCollection<Customer>("customers");

            //    // Create your new customer instance
            //    var customer = new Customer
            //    {
            //        Name = "John Doe",
            //        Phones = new string[] { "8000-0000", "9000-0000" },
            //        Age = 39,
            //        IsActive = true
            //    };

            //    // Create unique index in Name field
            //    col.EnsureIndex(x => x.Name, true);

            //    // Insert new customer document (Id will be auto-incremented)
            //    col.Insert(customer);

            //    // Update a document inside a collection
            //    customer.Name = "Joana Doe";

            //    col.Update(customer);

            //    // Use LINQ to query documents (with no index)
            //    var results = col.Find(x => x.Age > 20);


            //}
        }
예제 #28
0
        private List <MailMessage> CreateMessage()
        {
            MyProxy proxy;

            proxy = new MyProxy();
            //Console.WriteLine("Client is running at " + DateTime.Now.ToString());

            try
            {
                var result1            = proxy.GetBirthdays();
                List <MailMessage> msg = new List <MailMessage>();
                foreach (Employee emp in result1)
                {
                    MailDefinition md = new MailDefinition();
                    md.From       = "*****@*****.**";
                    md.IsBodyHtml = true;
                    md.Subject    = "Happy Birthday!";

                    ListDictionary replacements = new ListDictionary();
                    replacements.Add("{FirstName}", emp.Name);
                    replacements.Add("{LastName}", emp.Lastname);

                    string body = "Happy BirthDay  " + emp.Name + " " + emp.Lastname;

                    msg.Add(md.CreateMailMessage("*****@*****.**", replacements, body, new System.Web.UI.Control()));

                    //return msg;
                }


                return(msg);
            }

            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                proxy.Close();
            }
        }
예제 #29
0
        public void GetRealProxy()
        {
            var        port = NetworkHelpers.FindFreePort();
            TcpChannel chn  = new TcpChannel(port);

            ChannelServices.RegisterChannel(chn);
            try {
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton);

                MyProxy       proxy  = new MyProxy(typeof(MarshalObject), (MarshalByRefObject)Activator.GetObject(typeof(MarshalObject), $"tcp://localhost:{port}/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap"));
                MarshalObject objRem = (MarshalObject)proxy.GetTransparentProxy();

                RealProxy rp = RemotingServices.GetRealProxy(objRem);

                Assert.IsNotNull(rp, "#A12");
                Assert.AreEqual("MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType().ToString(), "#A13");
            } finally {
                ChannelServices.UnregisterChannel(chn);
            }
        }
예제 #30
0
        public void ProxyTypeGenerator_GeneratorTypeWithInjection()
        {
            var implementation = new MyProxy();

            var proxy = new ProxyTypeGenerator()
                        .CreateProxy(
                typeof(IMyProxy),
                implementation,
                (context) =>
            {
                context.TypeBuilder.InheritsFrom <MarshalByRefObject>();
            },
                new ProxyOptions()
            {
                TypeName = Guid.NewGuid().ToString()
            });

            Assert.IsNotNull(proxy);
            Assert.IsTrue(proxy is MarshalByRefObject);
        }
예제 #31
0
        public void Test_Proxy()
        {
            int      result    = 0;
            ISubject mySubject = new MySubject();

            result = mySubject.Request("param1");
            Assert.AreEqual(1, result);

            ISubject myProxy = new MyProxy(mySubject);

            // adds 1000 for each proxy call

            result = myProxy.Request("param2");
            Assert.AreEqual(1001, result);

            result = myProxy.Request("param3");
            Assert.AreEqual(2001, result);

            result = myProxy.Request("");
            Assert.AreEqual(3001, result);
        }
    public static void Main()
    {
        try
        {
            TcpChannel myTcpChannel = new TcpChannel(8086);
            ChannelServices.RegisterChannel(myTcpChannel);
            MyProxy     myProxyObject = new MyProxy(typeof(PrintServer));
            PrintServer myPrintServer = (PrintServer)myProxyObject.GetTransparentProxy();
            if (myPrintServer == null)
            {
                Console.WriteLine("Could not locate server");
            }
            else
            {
                Console.WriteLine(myPrintServer.MyPrintMethod("String1", 1.2, 6));
            }
            Console.WriteLine("Calling the Proxy");
            int kValue = myPrintServer.MyPrintMethod("String1", 1.2, 6);
            Console.WriteLine("Checking result");

            if (kValue == 6)
            {
                Console.WriteLine("PrintServer.MyPrintMethod PASSED : returned {0}",
                                  kValue);
            }
            else
            {
                Console.WriteLine("PrintServer.MyPrintMethod FAILED : returned {0}",
                                  kValue);
            }
            Console.WriteLine("Sample Done");
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception caught!!!");
            Console.WriteLine("The source of exception: " + e.Source);
            Console.WriteLine("The Message of exception: " + e.Message);
        }
    }
예제 #33
0
        private void TimerProxy_Tick(object sender, EventArgs e)
        {
            DateTime dt = DateTime.Now;

            if (dt.Hour >= 9 && dt.Hour < 15)
            {
                if (MyProxy.GoodProxyServer.Count <= (Master.Scripts().Count() * 2))
                {
                    AddLog("Proxy: Count(" + MyProxy.GoodProxyServer.Count.ToString() + ") < Script");
                    MyProxy.VerifyProxy();
                }
                else
                {
                    if (dt.Minute == 10 || dt.Minute == 25 || dt.Minute == 40 || dt.Minute == 55)
                    {
                        AddLog("Proxy: 10,25,40,55 Count(" + MyProxy.GoodProxyServer.Count.ToString() + ")");
                        MyProxy.GoodProxyServer.Clear();
                        MyProxy.VerifyProxy();
                    }
                }
            }
        }
예제 #34
0
파일: remoting2.cs 프로젝트: Zman0169/mono
	static int Main () {
		R1 myobj = new R1 ();
		long lres;
		
		MyProxy real_proxy = new MyProxy (myobj);

		R1 o = (R1)real_proxy.GetTransparentProxy ();

		RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add);
		d2 (6, 7);
		
		IAsyncResult ar1 = d2.BeginInvoke (2, 4, null, null);
		lres = d2.EndInvoke (ar1);
		if (lres != 6)
			return 1;

		return 0;
	}
예제 #35
0
    static int Main()
    {
        R1 myobj = new R1 ();
        int res = 0;
        long lres;

        MyProxy real_proxy = new MyProxy (myobj);

        R1 o = (R1)real_proxy.GetTransparentProxy ();

        if (RemotingServices.IsTransparentProxy (null))
            return 1;

        if (!RemotingServices.IsTransparentProxy (o))
            return 2;

        Console.WriteLine ("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy (o));

        if (o.GetType () != myobj.GetType ())
            return 3;

        MyStruct myres = o.Add (2, out res, 3);

        Console.WriteLine ("Result: " + myres.a + " " +
                   myres.b + " " + myres.c +  " " + res);

        if (myres.a != 2)
            return 4;

        if (myres.b != 3)
            return 5;

        if (myres.c != 5)
            return 6;

        if (res != 5)
            return 7;

        R1 o2 = new R1 ();

        lres = test_call (o2);

        lres = test_call (o);

        Console.WriteLine ("Result: " + lres);
        if (lres != 5)
            return 8;

        lres = test_call (o);

        o.test_field = 2;

        Console.WriteLine ("test_field: " + o.test_field);
        if (o.test_field != 2)
            return 9;

        RemoteDelegate1 d1 = new RemoteDelegate1 (o.Add);
        MyStruct myres2 = d1 (2, out res, 3);

        Console.WriteLine ("Result: " + myres2.a + " " +
                   myres2.b + " " + myres2.c +  " " + res);

        if (myres2.a != 2)
            return 10;

        if (myres2.b != 3)
            return 11;

        if (myres2.c != 5)
            return 12;

        if (res != 5)
            return 13;

        RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add);
        d2 (6, 7);

        if (!(real_proxy.GetTransparentProxy () is R2))
            return 14;

        return 0;
    }
예제 #36
0
 static int Main()
 {
     R1
     myobj
     =
     new
     R1
     ();
     int
     res
     =
     0;
     MyProxy
     real_proxy
     =
     new
     MyProxy
     (myobj);
     R1
     o
     =
     (R1)real_proxy.GetTransparentProxy
     ();
     RemoteDelegate1
     d1
     =
     new
     RemoteDelegate1
     (o.Add);
     IAsyncResult
     ar
     =
     d1.BeginInvoke
     (2,
     out
     res,
     3,
     null,
     null);
     MyStruct
     myres
     =
     d1.EndInvoke
     (out
     res,
     ar);
     Console.WriteLine
     ("Result: "
     +
     myres.a
     +
     " "
     +
     myres.b
     +
     " "
     +
     myres.c
     +
     " "
     +
     res);
     if
     (myres.a
     !=
     2)
     return
     1;
     if
     (myres.b
     !=
     3)
     return
     2;
     if
     (myres.c
     !=
     5)
     return
     3;
     if
     (res
     !=
     5)
     return
     4;
     return
     0;
 }
예제 #37
0
파일: remoting1.cs 프로젝트: Zman0169/mono
	static int Main () {
		R1 myobj = new R1 ();
		int res = 0;
		long lres;
		
		MyProxy real_proxy = new MyProxy (myobj);

		R1 o = (R1)real_proxy.GetTransparentProxy ();

		if (RemotingServices.IsTransparentProxy (null))
			return 1;
		
		if (!RemotingServices.IsTransparentProxy (o))
			return 2;

		Console.WriteLine ("XXXXXXXXXXXX: " + RemotingServices.GetRealProxy (o));

		if (o.GetType () != myobj.GetType ())
			return 3;

		MyStruct myres = o.Add (2, out res, 3);

		Console.WriteLine ("Result: " + myres.a + " " +
				   myres.b + " " + myres.c +  " " + res);

		if (myres.a != 2)
			return 4;
		
		if (myres.b != 3)
			return 5;
		
		if (myres.c != 5)
			return 6;

		if (res != 5)
			return 7;

		R1 o2 = new R1 ();
		
		lres = test_call (o2);
		
		lres = test_call (o);

		Console.WriteLine ("Result: " + lres);
		if (lres != 5)
			return 8;
		
		lres = test_call (o);

		o.test_field = 2;
		
		Console.WriteLine ("test_field: " + o.test_field);
		if (o.test_field != 2)
			return 9;

		RemoteDelegate1 d1 = new RemoteDelegate1 (o.Add);
		MyStruct myres2 = d1 (2, out res, 3);

		Console.WriteLine ("Result: " + myres2.a + " " +
				   myres2.b + " " + myres2.c +  " " + res);

		if (myres2.a != 2)
			return 10;
		
		if (myres2.b != 3)
			return 11;
		
		if (myres2.c != 5)
			return 12;

		if (res != 5)
			return 13;

		RemoteDelegate2 d2 = new RemoteDelegate2 (o.nonvirtual_Add);
		d2 (6, 7);

		if (!(real_proxy.GetTransparentProxy () is R2))
			return 14;

		/* Test what happens if the proxy doesn't return the required information */
		EmptyProxy handler = new EmptyProxy ( typeof (R3) );
		R3 o3 = (R3)handler.GetTransparentProxy();

		if (o3.anObject != null)
			return 15;

		if (o.null_test_field != null)
			return 16;

		return 0;
	}