Esempio n. 1
0
        /*
         * 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;
    }
Esempio n. 3
0
    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;
    }
Esempio n. 4
0
 public UserSteamAdapter(SteamListener steamListener, long steamid)
 {
     SteamListener = steamListener;
     SteamId       = new SteamID(unchecked ((ulong)steamid));
 }