void Update()
        {
            if ((DateTime.UtcNow - lastSend) > TimeSpan.FromSeconds(2.0))
            {
                IMessage message = CreateBasicMessage();
                context.Dispatcher.Send(message);

                lastSend = DateTime.UtcNow;
            }

            proxy.ForwardRemoteMessages();
            context.Dispatcher.DispatchMessages();
            proxy.SendToRemote();


            Debug.Log("Update");
        }
        private static void SameProcessRemoteCommunicatorTest()
        {
            IContext contextA = CreateContext("ContextA");
            IContext contextB = CreateContext("ContextB");

            SameProcessRemoteCommunicator communicatorA = new SameProcessRemoteCommunicator();
            SameProcessRemoteCommunicator communicatorB = new SameProcessRemoteCommunicator(communicatorA);

            RemoteDispatcherProxy proxyA = CreateRemoteDispatcher(contextA, communicatorA);
            RemoteDispatcherProxy proxyB = CreateRemoteDispatcher(contextB, communicatorB);

            PayloadA plA = new PayloadA();
            PayloadB plB = new PayloadB();

            var message = contextA.MessageComposer.Compose(plA, plB);

            contextA.Dispatcher.Send(message);
            contextA.Dispatcher.DispatchMessages();

            proxyB.ForwardRemoteMessages();
            contextB.Dispatcher.DispatchMessages();
        }
        private static void MemoryMappedTest(string[] args)
        {
            bool isClient = args.Length > 0 && args[0] == "client";
            bool isHost   = !isClient;

            string   contextName = "Context" + (isClient ? ".Client" : ".Host");
            IContext context     = CreateContext(contextName);


            DotNetThreadStarter      threadStarter = new DotNetThreadStarter();
            MemoryMappedCommunicator communicator  = new MemoryMappedCommunicator(threadStarter, "Tgrc.Messages.MemoryMap", isHost);

            RemoteDispatcherProxy proxy = CreateRemoteDispatcher(context, communicator);

            communicator.StartThreads();

            DateTime lastSend = DateTime.UtcNow;

            while (true)
            {
                if ((DateTime.UtcNow - lastSend) > TimeSpan.FromSeconds(1.5))
                {
                    for (int i = 0; i < 500; i++)
                    {
                        IMessage message = CreateBasicMessage(context);
                        context.Dispatcher.Send(message);
                    }

                    lastSend = DateTime.UtcNow;
                }


                context.Dispatcher.DispatchMessages();
                proxy.SendToRemote();
                proxy.ForwardRemoteMessages();
            }
        }