Esempio n. 1
0
        /// <summary>
        /// Permette il trasferimento dei risultati relativi ad un task già elaborato e specificato dal proprio
        /// identificativo, impostando l'oggetto che dovrà contenere queste informazioni.
        /// </summary>
        /// <param name="id">l'identificativo precedentemente associato alla richiesta di elaborazione</param>
        /// <param name="results">i risultati relativi al task di cui è stata completata l'elaborazione</param>
        public void GetResults(string id, out TaskResults results)
        {
            m_Container.WriteToLog("GetResults: task request id = {0}.", id);

            ServiceFault fault = null;

            // Ottiene la copia dei metadati relativi al task.
            TaskMetadata tm;

            if (!m_Container.TryGetUserTask(id, out tm, out fault))
            {
                throw new FaultException <ServiceFault>(fault);
            }

            m_Container.WriteToLog("GetResults: sending results from file {0}.", tm.PathToTargetFile);

            // Prepara e invia il risultato.
            try
            {
                results = new TaskResults()
                {
                    ElapsedTime       = m_Container.GetProcessingTime(tm),
                    EncounteredErrors = tm.Errors,
                    Contents          = File.ReadAllText(tm.PathToTargetFile)
                };
            }
            catch (Exception e)
            {
                m_Container.HandleError(e.ToString(), ServiceFaultCode.SendTaskResultsFailed, out fault);
                throw new FaultException <ServiceFault>(fault);
            }
        }