Esempio n. 1
0
        public async Task OnReportPulledAsync(ReportAgent agent, List <ReportDetail> reports)
        {
            // Update report table
            var updated = await this.UpdateReportAndDetails(reports, agent.Credential);

            if (updated <= 0)
            {
                return;
            }

            // Update meta db
            var meta = await this.store.GetAgentMetadataAsync(agent.Credential);

            if (meta == null)
            {
                return;
            }

            meta.PendingReceive      -= Math.Min(meta.PendingReceive, updated);
            meta.LastReportUpdateTime = DateTime.UtcNow;
            await this.store.CreateOrUpdateAgentMetadataAsync(meta);

            // Stop agent if no more detail to pull
            if (meta.PendingReceive <= 0)
            {
                SmsProviderEventSource.Current.Info(SmsProviderEventSource.EmptyTrackingId, this, nameof(this.OnReportPulledAsync), OperationStates.Succeeded, $"Report agent stopping (complete). connectorName={agent.Credential.ConnectorName} connectorKey={agent.Credential.ConnectorId}");
                agent.UnSubscribe();
            }
        }
Esempio n. 2
0
        public void OnAgentUnSubscribed(ReportAgent agent)
        {
            var key = this.GetAgentKey(agent.Credential);

            this.agents.TryRemove(key, out ReportAgent deleted);
        }