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 }
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 }