Esempio n. 1
0
        private static void Client_OnEvent(DistClient sender, DistEvent e)
        {
            // Check if message is from us
            if (e.GetSource() == sender.GetClientID().InstanceID)
            {
                return;
            }

            if (counter == 0)
            {
                recv_timer = new Timer();
            }

            if (e.GetAttributeValue("Cnt") != counter)
            {
                Console.WriteLine("Error");
            }

            counter++;

            if (counter == COUNT)
            {
                Console.WriteLine($"Received {COUNT} events in {recv_timer.GetTime()} seconds -> Frequency: {recv_timer.GetFrequency(COUNT)} ");
                counter = 0;
            }
        }
        private static void Client_OnEvent(DistClient sender, DistEvent e)
        {
            // Check if message is from us
            if (e.GetSource() == sender.GetClientID().InstanceID)
            {
                return;
            }

            System.Console.WriteLine(e.ToString());
        }
        private static void Client_OnEvent(DistClient sender, DistEvent e)
        {
            // Check if message is from us
            if (e.GetSource() == sender.GetClientID().InstanceID)
            {
                return;
            }

            MessageEvent mess = e as MessageEvent;

            if (mess != null)
            {
                Console.WriteLine(mess.Message);
            }
        }
        static void Main(string[] args)
        {
            // Add a message receiver
            Message.OnMessage += Message_OnMessage;

            // Set message level to debug
            Message.SetMessageLevel(MessageLevel.DEBUG);


            // Initialize platforms for various used SDKs
            GizmoSDK.GizmoBase.Platform.Initialize();
            GizmoSDK.GizmoDistribution.Platform.Initialize();



            // Create a manager. The manager controls it all
            DistManager manager = DistManager.GetManager(true);

            // Start the manager with settting for transport protocols
            manager.Start(DistRemoteChannel.CreateDefaultSessionChannel(), DistRemoteChannel.CreateDefaultServerChannel());

            //If we want to attach the DistMonitor debugger
            manager.EnableDebug(true);

            // Client set up. You are a client that sends and receives information
            DistClient client = new DistClient("Our Test Client", manager);

            // We need to tell the client how to initialize
            client.Initialize();

            // Now we can get a session. A kind of a meeting room that is used to exchange various "topics"
            DistSession session = client.GetSession("MessageSession", true, true);

            // Joint that session and subribe all events
            client.JoinSession(session);

            // Subscribe standard events
            client.SubscribeObjects(session, null, true);

            // Create a delegete
            client.OnNewObject        += Client_OnNewObject;
            client.OnNewAttributes    += Client_OnNewAttributes;
            client.OnUpdateAttributes += Client_OnUpdateAttributes;

            DistObject o = manager.GetObject("TestObject");

            client.AddObject(o, session);

            o = client.WaitForObject("TestObject", session);

            DistTransaction update = new DistTransaction();

            for (int i = 0; i < 100; i++)
            {
                update.NewTransaction();

                update.SetAttributeValue("Updater", client.GetClientID().InstanceID.ToString());
                update.SetAttributeValue("Time", Time.SystemSeconds);

                client.UpdateObject(update, o);

                System.Threading.Thread.Sleep(1000);
            }



            client.ResignSession(session);

            client.Uninitialize();

            // Some kind of graceful shutdown
            manager.Shutdown();


            // GC and platform uninit is managed by the system automatically
        }
Esempio n. 5
0
        static void Main(string[] args)
        {
            // Add a message receiver
            Message.OnMessage += Message_OnMessage;

            // Set message level to debug
            Message.SetMessageLevel(MessageLevel.DEBUG | MessageLevel.INTERNAL);


            // Initialize platforms for various used SDKs
            GizmoSDK.GizmoBase.Platform.Initialize();
            GizmoSDK.GizmoDistribution.Platform.Initialize();



            // Create a manager. The manager controls it all
            DistManager manager = DistManager.GetManager(true);

            // Register some factories
            manager.RegisterObject <BattlefieldSoldierObject>();
            manager.RegisterObject <BattlefieldVehicleObject>();
            manager.RegisterObject <BattlefieldTimeObject>();

            // Events
            manager.RegisterEvent <BattlefieldTimeSyncEvent>();

            DistObject x = manager.GetObject("sold", "BattlefieldSoldierObject");



            // Start the manager with settting for transport protocols
            var MCastAddress = "234.2.3.100";

            //var networkInterface = "10.23.24.50"; // Update this to your interface ip. E.g. 192.168.100.100.
            ushort serverPort  = 6667;
            ushort sessionPort = 6668;

            var serverChannel  = DistRemoteChannel.CreateChannel(5000, DistTransportType.MULTICAST, MCastAddress, serverPort /*,networkInterface*/);
            var sessionChannel = DistRemoteChannel.CreateChannel(5000, DistTransportType.MULTICAST, MCastAddress, sessionPort /*,networkInterface*/);

            manager.Start(sessionChannel, serverChannel);

            //If we want to attach the DistMonitor debugger
            manager.EnableDebug(true);

            // Client set up. You are a client that sends and receives information
            DistClient client = new DistClient("Our Test Client", manager);

            // We need to tell the client how to initialize
            client.Initialize();

            // Now we can get a session. A kind of a meeting room that is used to exchange various "topics"
            DistSession session = client.GetSession("Battlefield", true, true);

            // Joint that session and subribe all events
            client.JoinSession(session);

            // Create a delegete
            client.OnNewObject        += Client_OnNewObject;
            client.OnNewAttributes    += Client_OnNewAttributes;
            client.OnUpdateAttributes += Client_OnUpdateAttributes;

            client.OnEvent += Client_OnEvent;

            // Subscribe all standard objects
            client.SubscribeObjects(session, null, true);

            // Subscribe all standard events
            client.SubscribeEvents(session);

            const int COUNT = 30;

            BattlefieldSoldierObject[] objs = new BattlefieldSoldierObject[COUNT];


            DistTransaction update = new DistTransaction();

            for (int i = 0; i < 1000; i++)
            {
                int idx = ((int)Time.SystemSeconds) % COUNT;

                if (objs[idx] == null)
                {
                    objs[idx] = manager.GetObject <BattlefieldSoldierObject>($"Soldier{idx}");

                    client.AddObject(objs[idx], session);

                    objs[idx] = client.WaitForObject(objs[idx].GetName(), session, -1) as BattlefieldSoldierObject;

                    if (objs[idx] == null)
                    {
                        System.Console.WriteLine($"Failed to Created Soldier{idx} ---- No server");
                        System.Threading.Thread.Sleep(1000);
                        continue;
                    }
                    else
                    {
                        System.Console.WriteLine($"Created Soldier{idx} --- OK");
                    }
                }



                update.NewTransaction();

                update.SetAttributeValue("Updater", client.GetClientID().InstanceID.ToString());
                update.SetAttributeValue("Obj", idx);

                if (!client.UpdateObject(update, objs[idx]))
                {
                    System.Console.WriteLine($"Update failed for Soldier{idx} --- FAIL");
                }


                System.Threading.Thread.Sleep(1000);
            }


            client.ResignSession(session);

            client.Uninitialize();

            // Some kind of graceful shutdown
            manager.Shutdown();


            // GC and platform uninit is managed by the system automatically
        }