/* * TODO: bind callbacks to main thread, just like in AWWS * a little weird with ICE's callback threads * so right now our temporary solution is ContinueWith */ public async Task ServerMain() { Ice.Communicator communicator = null; try { var initdat = new Ice.InitializationData(); initdat.dispatcher = (act, conn) => Task.Run(act); // prevent weird deadlocks communicator = Ice.Util.initialize(initdat); #if DEBUG var adapter = communicator.createObjectAdapterWithEndpoints("Callback.Client", "tcp -h 127.0.1.1 -p 31338"); var rawServer = Murmur.ServerPrxHelper.checkedCast(communicator.stringToProxy("s/1 -t -e 1.1:tcp -h 127.0.0.1 -p 31337")); #else var adapter = communicator.createObjectAdapterWithEndpoints("Callback.Client", "tcp -h 127.0.1.2 -p 31338"); var meta = Murmur.MetaPrxHelper.checkedCast(communicator.stringToProxy("Meta:tcp -h 127.0.1.1 -p 6502")); var rawServer = await FixIce.FromAsync(1, meta.begin_getServer, meta.end_getServer); #endif Console.Write("Steam user: "******"Steam password: "******"Steam guard code: "); return(Console.ReadLine()); }, new SteamEventForwarder { Server = server }, StashCallback); var steamTask = steamListener.Run(); var cmdmgr = new CommandManager(); var contextCallbackMgr = new ContextCallbackManager(steamListener, server, adapter, StashCallback); var pluginMan = new PluginManager(this, steamListener, server, contextCallbackMgr, cmdmgr); var asci = adapter.addWithUUID(new ServerCallback(this, steamListener, server, contextCallbackMgr, cmdmgr)); var asci2 = adapter.addWithUUID(pluginMan); var authenticator = adapter.addWithUUID(new Authenticator(this)); adapter.activate(); await server.AddCallback(Murmur.ServerCallbackPrxHelper.uncheckedCast(asci)); await server.AddCallback(Murmur.ServerCallbackPrxHelper.uncheckedCast(asci2)); await server.SetAuthenticator(Murmur.ServerAuthenticatorPrxHelper.uncheckedCast(authenticator)); await UpdateChannelModel(server); await Task.Yield(); Console.WriteLine("server up"); communicator.waitForShutdown(); await steamTask; } finally { //communicator.destroy(); } }
public static void Initialize(SteamListener listener) { if (Instance == null) { Instance = new GameObject("Steam Listener").AddComponent <SteamListenerUnity>(); } Instance.Listener = listener; }
public SteamServerConnection(ulong steamID, SteamListener listener, int endPointCount, out long userAddress) { Listener = listener; RemoteID = new CSteamID(steamID); SendReliableData = new byte[Listener.DataSize]; SendUnreliableData = new byte[Listener.DataSize]; byte[] fakeAddress = new byte[4]; fakeAddress[0] = (byte)(endPointCount > 255 ? 255 : endPointCount); endPointCount -= fakeAddress[0]; fakeAddress[1] = (byte)(endPointCount > 255 ? 255 : endPointCount); endPointCount -= fakeAddress[1]; fakeAddress[2] = (byte)(endPointCount > 255 ? 255 : endPointCount); endPointCount -= fakeAddress[2]; fakeAddress[3] = (byte)(endPointCount > 255 ? 255 : endPointCount); endPointCount -= fakeAddress[3]; DummyEndPoint = new IPEndPoint(new IPAddress(fakeAddress), 0); userAddress = DummyEndPoint.Address.Address; }
public UserSteamAdapter(SteamListener steamListener, long steamid) { SteamListener = steamListener; SteamId = new SteamID(unchecked ((ulong)steamid)); }