public Application() { PlatformManager = new PlatformManager(CreateWxPlatformManager()); Engine = new Engine(PlatformManager); Engine.Init(); // Search for the location of the main assets folder. string assetsPath; if (!SearchForAssetsDirectory(out assetsPath)) throw new Exception("Editor assets were not found"); Archive = new ArchiveVirtual(); Archive.MountDirectories(assetsPath, Allocator.GetHeap()); ResourceManager = Engine.ResourceManager; ResourceManager.Archive = Archive; NativeWindowManager = Engine.WindowManager; RenderDevice = Engine.RenderDevice; ModuleManager = new ModuleManager(); RemotingManager = new RemotingManager(ModuleManager); ModuleManager.Init(RemotingManager.ServiceManager); //Initiate global services WindowManager = new Windows.WindowManager(this); RemotingManager.ServiceManager.GetCreateImplementation<IWindowManager>(WindowManager); // FIXME: Introduce a better system to get at global objects (dependency injection?) RemotingManager.ServiceManager.Application = this; }
public void TestServiceAsyncCall() { const ushort ServerPort = 13337; var moduleManager = new ModuleManager(); var remotingManager = new RemotingManager(moduleManager); moduleManager.Init(remotingManager.ServiceManager); var endPoint = new HostEndPoint("localhost", ServerPort); // Start the server and setup our service. var server = new Server(remotingManager, endPoint); var serverThread = new Thread(Process); serverThread.Start(server); // Start the client and connect to the service. var client = new Client(remotingManager); var clientThread = new Thread(Process); clientThread.Start(client); var connectTask = client.Connect(endPoint); connectTask.Wait(); Assert.IsTrue(connectTask.Result); var service = new ServiceTest(); var serviceImpl = server.RemotingManager.ServiceManager.GetCreateImplementation<IServiceTest>(service); var serviceProxy = client.RemotingManager.ServiceManager.GetService<IServiceTest>(new SessionRemotingPeer(client.Session), serviceImpl.LocalId); var pingTask = serviceProxy.Ping(); Assert.IsTrue(pingTask.Wait(1000)); Assert.AreEqual("Pong", pingTask.Result); serverThread.Abort(); clientThread.Abort(); }