Example #1
0
        static void Main(string[] args)
        {
            //Change headnode here
            const string headnode    = "head.contoso.com";
            const string serviceName = "CommonData.PrimeFactorization";

            SessionStartInfo info = new SessionStartInfo(headnode, serviceName);

            Random random = new Random();

            try
            {
                //create an interactive session
                using (Session session = Session.CreateSession(info))
                {
                    Console.WriteLine("Session {0} has been created", session.Id);

                    using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(session))
                    {
                        //send request
                        int num = random.Next(1, Int32.MaxValue);
                        FactorizeRequest request = new FactorizeRequest(num);
                        client.SendRequest <FactorizeRequest>(request, num);
                        client.EndRequests();

                        //get response
                        foreach (BrokerResponse <FactorizeResponse> response in client.GetResponses <FactorizeResponse>())
                        {
                            int   number  = response.GetUserData <int>();
                            int[] factors = response.Result.FactorizeResult;

                            Console.WriteLine("{0} = {1}", number, string.Join <int>(" * ", factors));
                        }
                    }

                    session.Close();
                    Console.WriteLine("done");

                    Console.WriteLine("Press any key to exit");
                    Console.ReadKey();
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            //change headnode name and service name
            SessionStartInfo info = new SessionStartInfo("head.contoso.com", "PrimeFactorizationService");

            try
            {
                //Create a durable session
                DurableSession session = DurableSession.CreateSession(info);
                Console.WriteLine("Session {0} has been created", session.Id);


                //Send batch request
                Random    random      = new Random();
                const int numRequests = 100;

                using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(session))
                {
                    Console.WriteLine("Sending {0} requests...", numRequests);
                    for (int i = 0; i < numRequests; i++)
                    {
                        int number = random.Next(1, Int32.MaxValue);

                        FactorizeRequest request = new FactorizeRequest(number);

                        //The second param is used to identify each request.
                        //It can be retrieved from the response.
                        client.SendRequest <FactorizeRequest>(request, number);
                    }

                    client.EndRequests();
                    Console.WriteLine("All the {0} requests have been sent", numRequests);

                    Console.WriteLine("Press any key to exit");
                    Console.ReadKey();
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #3
0
        static void Main(string[] args)
        {
            //Change headnode here
            const string headnode    = "head.contoso.com";
            const string serviceName = "PrimeFactorizationService";

            SessionStartInfo info = new SessionStartInfo(headnode, serviceName);

            //Enable session pool
            info.ShareSession   = true;
            info.UseSessionPool = true;

            try
            {
                //create an interactive session
                using (Session session = Session.CreateSession(info))
                {
                    Console.WriteLine("Session {0} has been created", session.Id);

                    //in one session, each broker client should have a unique id
                    string ClientId = Guid.NewGuid().ToString();

                    //use this event sync main thread and callback
                    AutoResetEvent done = new AutoResetEvent(false);

                    using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(ClientId, session))
                    {
                        Console.WriteLine("BrokerClient {0} has been created", ClientId);

                        //set callback function. this handler will be invoke before service replies.
                        client.SetResponseHandler <FactorizeResponse>((response) =>
                        {
                            int number    = response.GetUserData <int>();
                            int[] factors = response.Result.FactorizeResult;

                            Console.WriteLine("{0} = {1}", number,
                                              string.Join <int>(" * ", factors));

                            //release the lock
                            done.Set();
                        });

                        Random random = new Random();
                        int    num    = random.Next(1, Int32.MaxValue);

                        //send request
                        FactorizeRequest request = new FactorizeRequest(num);
                        client.SendRequest <FactorizeRequest>(request, num);

                        client.EndRequests();

                        //wait until callback returns
                        done.WaitOne();
                    }

                    Console.WriteLine("Factorization done.");

                    Console.WriteLine("Press any key to exit");
                    Console.ReadKey();
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }