コード例 #1
0
    public bool Initialize(IPAddress ipAddress, int port = default)
    {
        if (_isDisposed)
        {
            throw new ObjectDisposedException(nameof(BroadcastService));
        }
        if (ipAddress == null)
        {
            throw new ArgumentNullException(nameof(ipAddress));
        }
        if (IsReady && Equals(LocalEndPoint, new IPEndPoint(ipAddress, port)))
        {
            return(true);
        }

        if (!_networkUtility.IsReadyToUse(ipAddress))
        {
            return(false);                                          //Throw exception here?
        }
        if (IsReceiving)
        {
            CancelReceive();
        }
        _broadcastImpl?.Dispose();
        _broadcastImpl = port == default
            ? _broadcastFactory.Create(ipAddress)
            : _broadcastFactory.Create(ipAddress, port);

        IsReady = true;
        return(true);
    }
コード例 #2
0
ファイル: Submit.cs プロジェクト: BlackDragonIX/Yolol-Ladder
 public Submit(ISolutions solutions, IChallenges challenges, IVerification verification, IBroadcast broadcast, DiscordSocketClient client)
 {
     _solutions    = solutions;
     _challenges   = challenges;
     _verification = verification;
     _broadcast    = broadcast;
     _client       = client;
 }
コード例 #3
0
 public InMemoryScheduler(IChallenges challenges, ISolutions solutions, IBroadcast broadcaster, ILeaderboard leaderboard, DiscordSocketClient client)
 {
     _challenges  = challenges;
     _solutions   = solutions;
     _broadcaster = broadcaster;
     _client      = client;
     _leaderboard = leaderboard;
 }
コード例 #4
0
 public InMemoryScheduler(IChallenges challenges, ISolutions solutions, IBroadcast broadcaster, ILeaderboard leaderboard, DiscordSocketClient client, IMessages messages, ITrueskillUpdater skillUpdate)
 {
     _challenges  = challenges;
     _solutions   = solutions;
     _broadcaster = broadcaster;
     _client      = client;
     _messages    = messages;
     _skillUpdate = skillUpdate;
     _leaderboard = leaderboard;
 }
コード例 #5
0
        public static double GetScore(this IBroadcast broadcast)
        {
            var weightedPolarities = GetWeightedPolarities(broadcast);
            var weightSum          = weightedPolarities.Sum(w => w.Value);

            if (weightSum == 0 || !weightedPolarities.TryGetValue(RatingPolarity.Positive, out var positiveWeight) || positiveWeight == 0)
            {
                return(0);
            }

            return((double)positiveWeight / weightSum);
        }
コード例 #6
0
    public Chainer(IBroadcast broadcast, int payloadSegmentLength = 8192) : base(broadcast)
    {
        if (payloadSegmentLength is < MinSegmentLength or > MaxSegmentLength)
        {
            throw new ArgumentOutOfRangeException(nameof(payloadSegmentLength),
                                                  $"Provided segment length should be in range from {MinSegmentLength} to {MaxSegmentLength}");
        }

        _payloadSegmentLength   = payloadSegmentLength;
        _formatter              = new BinaryFormatter();
        _receivedSegmentsBuffer = new ConcurrentDictionary <Guid, Chain>();
        _cleanupTimer           = new Timer(CleanupCallback, null, 0, CleanupPeriodMs);
    }
コード例 #7
0
        public DbSolutions(IDatabase database, IBroadcast broadcast)
        {
            _database = database;

            try
            {
                _database.Exec("CREATE TABLE IF NOT EXISTS `Solutions` (`ChallengeId` INTEGER NOT NULL,`UserId` INTEGER NOT NULL,`Score` INTEGER NOT NULL,`Yolol` TEXT NOT NULL,PRIMARY KEY(`ChallengeId`,`UserId`));");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
コード例 #8
0
ファイル: Runtime.cs プロジェクト: swampnet/Swampnet.Dash
        public Runtime(
            ITestRunner testRunner,
            IArgosRunner argosRunner,
            IDashboardRepository dashboardRepository,
            IBroadcast broadcast)
        {
            _testRunner          = testRunner;
            _argosRunner         = argosRunner;
            _dashboardRepository = dashboardRepository;
            _broadcast           = broadcast;

            _runtimeThread = new Thread(RuntimeThread);
            _runtimeThread.IsBackground = true;
        }
コード例 #9
0
        public static DateTime GetTimestamp(this IBroadcast self)
        {
            switch (self.State)
            {
            case BroadcastState.Broadcasted:
                return(self.BroadcastedUtc.Value);

            case BroadcastState.Completed:
                return(self.CompletedUtc.Value);

            case BroadcastState.Failed:
                return(self.FailedUtc.Value);

            default:
                throw new ArgumentException($"Unsupported IBroadcast.State={Enum.GetName(typeof(BroadcastState), self.State)}");
            }
        }
コード例 #10
0
    private void NetworkStateChangedHandler(object sender, EventArgs e)
    {
        if (!IsReady || _networkUtility.IsReadyToUse(_broadcastImpl.LocalEndPoint.Address))
        {
            return;
        }

        if (IsReceiving && _cancelReceiveTokenSource is not null)
        {
            _cancelReceiveTokenSource.Cancel();
        }
        _cancelReceiveTokenSource?.Dispose();
        IsReady = IsReceiving = false;
        _broadcastImpl?.Dispose();
        _broadcastImpl = null;

        ConnectionLost?.Invoke(this, EventArgs.Empty);
    }
コード例 #11
0
        public async Task DeleteBroadcastAsync(IBroadcast broadcast)
        {
            await _broadcastInProgressRepository.DeleteAsync(broadcast.OperationId);

            await _broadcastRepository.DeleteAsync(broadcast.OperationId);
        }
コード例 #12
0
 protected BroadcastDecorator(IBroadcast broadcast)
 {
     Broadcast = broadcast ?? throw new ArgumentNullException(nameof(broadcast));
 }
コード例 #13
0
        public async Task <bool> HandleAsync(IBroadcast <Before, ILoggable <Before> > e)
        {
            await Write("Before", e.Subject);

            return(false);
        }
コード例 #14
0
 public void Dispose()
 {
     _broadcast = null;
 }
コード例 #15
0
 public async Task<bool> HandleAsync(IBroadcast<Failed, ILoggable<Failed>> e)
 {
     await Write("Failed", e.Subject, e.Exception);
     return false;
 }
コード例 #16
0
        public async Task <bool> HandleAsync(IBroadcast <Unhandled, ILoggable <Unhandled> > e)
        {
            await Write("Unhandled", e.Subject);

            return(false);
        }
コード例 #17
0
ファイル: APIClient.cs プロジェクト: julyfortoday/APIClient
 /// <summary>
 /// Sends only broadcasts.
 /// </summary>
 public OrderResponse LaunchBroadcast(IBroadcast broadcast)
 {
     CheckInitialized();
     return SendOrder(broadcast);
 }
コード例 #18
0
 public async Task<bool> HandleAsync(IBroadcast<Unhandled, ILoggable<Unhandled>> e)
 {
     await Write("Unhandled", e.Subject);
     return false;
 }
コード例 #19
0
 public async Task<bool> HandleAsync(IBroadcast<Before, ILoggable<Before>> e)
 {
     await Write("Before", e.Subject);
     return false;
 }
コード例 #20
0
 public static IDictionary <RatingPolarity, int> GetWeightedPolarities(this IBroadcast broadcasts) => broadcasts
 .Ratings.GroupBy(r => r.Polarity).ToDictionary(g => g.Key, g => g.Sum(r => r.Weight));
コード例 #21
0
        public async Task <bool> HandleAsync(IBroadcast <Failed, ILoggable <Failed> > e)
        {
            await Write("Failed", e.Subject, e.Exception);

            return(false);
        }