Beispiel #1
0
 void OnRecordQueued(dynamic record, DocumentMetrics metrics)
 {
     if (RecordQueuedCallback != null)
     {
         RecordQueuedCallback(this, record, metrics);
     }
 }
Beispiel #2
0
        void UpdateTrackedList(List <dynamic> batch, DateTime timestamp)
        {
            foreach (dynamic doc in batch)
            {
                lock (_syncTracker)
                {
                    if (!_docsTracker.ContainsKey(doc.id))
                    {
                        _docsTracker.Add(doc.id, new DocumentMetrics()
                        {
                            Queued          = timestamp,
                            Retrieved       = DateTime.MinValue,
                            NumberOfRetries = 1
                        });
                    }
                    else
                    {
                        _docsTracker[doc.id].Queued    = timestamp;
                        _docsTracker[doc.id].Retrieved = DateTime.MinValue;
                        _docsTracker[doc.id].NumberOfRetries++;
                    }
                }

                DocumentMetrics metrics = _docsTracker[doc.id];
                dynamic         expObj  = DynamicToExpandoObject(doc);
                OnRecordQueued(expObj, metrics);
            }
        }
Beispiel #3
0
 void OnOutputReceived(dynamic output, DocumentMetrics metrics)
 {
     if (OutputReceivedCallback != null)
     {
         OutputReceivedCallback(this, output, metrics);
     }
 }
Beispiel #4
0
        void DataRetrievingWorker()
        {
            string jobId = string.Format("worker_{0}", WorkerId);

            while (_docsInProgress > 0)
            {
                dynamic   results   = null;
                Stopwatch watcher   = new Stopwatch();
                DateTime  retrieved = DateTime.MinValue;

                try
                {
                    watcher.Start();
                    results = _engine.GetProcessedDocumentsByJobId(jobId);
                    watcher.Stop();
                    retrieved = DateTime.Now;
                }
                catch (Exception ex)
                {
                    SemantriaWorkerException workerException = new SemantriaWorkerException("An exception occured during retrieval of the documents from the server.", ex);
                    OnErrorOccurred(workerException);
                }

                if (results == null || results.Count == 0)
                {
                    Thread.Sleep(PullingTimeout);
                    continue;
                }

                OnMethodExecuted(new RequestMetrics(SemantriaAPImethod.RetrieveResultsByJobId, watcher.Elapsed, results.Count));

                foreach (dynamic doc in results)
                {
                    DocumentMetrics metrics = new DocumentMetrics();
                    lock (_syncTracker)
                    {
                        if (!_docsTracker.ContainsKey(doc.id))
                        {
                            continue;
                        }

                        _docsTracker[doc.id].Retrieved = retrieved;
                        metrics = _docsTracker[doc.id];
                        _docsInProgress--;
                    }

                    OnOutputReceived(doc, metrics);
                }
            }
        }
 void OnRecordQueued(dynamic record, DocumentMetrics metrics)
 {
     if (RecordQueuedCallback != null)
     {
         RecordQueuedCallback(this, record, metrics);
     }
 }
 void OnOutputReceived(dynamic output, DocumentMetrics metrics)
 {
     if (OutputReceivedCallback != null)
     {
         OutputReceivedCallback(this, output, metrics);
     }
 }
        void DataRetrievingWorker()
        {
            string jobId = string.Format("worker_{0}", WorkerId);

            while (_docsInProgress > 0)
            {
                dynamic results = null;
                Stopwatch watcher = new Stopwatch();
                DateTime retrieved = DateTime.MinValue;

                try
                {
                    watcher.Start();
                    results = _engine.GetProcessedDocumentsByJobId(jobId);
                    watcher.Stop();
                    retrieved = DateTime.Now;
                }
                catch (Exception ex)
                {
                    SemantriaWorkerException workerException = new SemantriaWorkerException("An exception occured during retrieval of the documents from the server.", ex);
                    OnErrorOccurred(workerException);
                }

                if (results == null || results.Count == 0)
                {
                    Thread.Sleep(PullingTimeout);
                    continue;
                }

                OnMethodExecuted(new RequestMetrics(SemantriaAPImethod.RetrieveResultsByJobId, watcher.Elapsed, results.Count));

                foreach (dynamic doc in results)
                {
                    DocumentMetrics metrics = new DocumentMetrics();
                    lock (_syncTracker)
                    {
                        if (!_docsTracker.ContainsKey(doc.id))
                        {
                            continue;
                        }

                        _docsTracker[doc.id].Retrieved = retrieved;
                        metrics = _docsTracker[doc.id];
                        _docsInProgress--;
                    }

                    OnOutputReceived(doc, metrics);
                }
            }
        }
Beispiel #8
0
        //Callback method for analysis output.
        static void OutputReceived(object sender, dynamic output, DocumentMetrics metrics)
        {
            if (output == null)
            {
                return;
            }

            lock (resSyncObject)
            {
                if (!resultsTracker.ContainsKey(output.id))
                {
                    return;
                }
                else
                {
                    resultsTracker[output.id] = metrics;
                }

                resWritter.WriteRow(new List<string>()
                {
                    output.id,
                    string.Format("{0:0.##}", output.sentiment_score),
                    output.sentiment_polarity
                });
            }
        }
Beispiel #9
0
        //Callback method for analysis output.
        static void RecordQueued(object sender, dynamic record, DocumentMetrics metrics)
        {
            if (record == null)
            {
                return;
            }

            lock (resSyncObject)
            {
                if (!resultsTracker.ContainsKey(record.id))
                {
                    resultsTracker.Add(record.id, metrics);
                }
            }
        }