Esempio n. 1
0
        public async Task Test3()
        {
            SetupNlog.Initialize("bla");
            MappingExtensions.Mapper = new MapperConfiguration(cfg => {
                cfg.AddProfile <ArmaServerProfile>();
            }).CreateMapper();

            var f  = new SteamSession.SteamSessionFactory();
            var id = (uint)SteamGameIds.Arma2Oa;

            LockedWrapper.callFactory = new SafeCallFactory(); // workaround for accessviolation errors
            var c = await
                    f.Do(id, SteamHelper.Create().SteamPath,
                         async() => {
                using (var scheduler = new EventLoopScheduler()) {
                    using (var obs2 = new Subject <ArmaServerInfoModel>()) {
                        var s = obs2.Synchronize()
                                .ObserveOn(scheduler)
                                .Buffer(24)
                                //.Do(x => Console.WriteLine("r" + x.ToList<ServerInfoModel>()))
                                .SelectMany(x => x)
                                .Count()
                                .ToTask();
                        var c2 =
                            await
                            SteamServers.GetServers(f, true,
                                                    ServerFilterBuilder.Build().FilterByAppId(id).FilterByDedicated().Value,
                                                    obs2.OnNext)
                            .ConfigureAwait(false);
                        obs2.OnCompleted();
                        return(new BatchResult(await s));
                    }
                }
            }).ConfigureAwait(false);
        }
Esempio n. 2
0
            private async Task <BatchResult> GetSteamServers()
            {
                using (var scheduler = new EventLoopScheduler()) {
                    using (var obs2 = new Subject <ArmaServerInfoModel>()) {
                        var s = obs2.Synchronize()
                                .ObserveOn(scheduler)
                                .Buffer(Message.PageSize)
                                .Do(x => SendEvent(new ReceivedServerPageEvent(x.ToList <ServerInfoModel>())))
                                .SelectMany(x => x)
                                .Count()
                                .ToTask();
                        var c =
                            await
                            SteamServers.GetServers(SessionLocator, Message.IncludeRules, Message.Filter,
                                                    obs2.OnNext)
                            .ConfigureAwait(false);

                        obs2.OnCompleted();
                        return(new BatchResult(await s));
                    }
                }
            }
Esempio n. 3
0
            protected override async Task <BatchResult> HandleInternal()
            {
                using (var scheduler = new EventLoopScheduler()) {
                    using (var obs2 = new Subject <IPEndPoint>()) {
                        var s = obs2.Synchronize()
                                .ObserveOn(scheduler)
                                .Buffer(Message.PageSize)
                                .Do(x => SendEvent(new ReceivedServerAddressesPageEvent(x.ToList())))
                                .SelectMany(x => x)
                                .Count()
                                .ToTask();
                        var c =
                            await
                            SteamServers.GetServers(SessionLocator, false, Message.Filter,
                                                    x => obs2.OnNext(x.QueryEndPoint))
                            .ConfigureAwait(false);

                        obs2.OnCompleted();
                        return(new BatchResult(await s));
                    }
                }
            }