/**********************************************************************
         *                                                                    *
         *                 checkForNewExperiment()
         *                                                                    *
         **********************************************************************/
        /**
         <summary>
         Sends a request to the server if an experiment is queued.
         </summary>
         <remarks> 
         insert detailed description for checkForNewExperiment here...
         @cond INTERNAL
         documented by t.wilhelmer, 8.11.2015
         @endcond
         </remarks> 
         <param name="restAPI">In: RESTapi object with personalized x-apikey and userID. </param>
         <returns>New status for state machine.  </returns>
        */
        public Status checkForNewExperiment(RestAPI restAPI)
        {
            GETStatusResponse expResponse = new GETStatusResponse();
            try
            {
                expResponse = (GETStatusResponse)restAPI.GETRequest(RequestEndpoint.status);
            }
            catch(Exception e)
            {
                logger.errorLog("An exception occurred in checkForNewExperiment() using apis/engine/experiment/" + RequestEndpoint.status);
                logger.errorLog("Exception message:");
                logger.errorLog(e.Message);
                return Status.EXCEPTION;
            }

            
            if (expResponse.success == true)
            {
                Console.WriteLine("\nExperiment found!");
                logger.log("checkForNewExperiment()");
                logger.log("(" + expResponse.timestamp + ") - Experiment found : ExpId = " + expResponse.expId + "\n");
                return Status.DEQUEUEEXPERIMENT;
            }
            else
            {
                Console.WriteLine("No experiment found!");
                return Status.CHECKFOREXPERIMENT;
            }
        } 
        /**********************************************************************
         *                                                                    *
         *                 dequeueExperiment()
         *                                                                    *
         **********************************************************************/
        /**
         <summary>
         Sends request to server i order to retrieve experiment specification.
         </summary>
         <remarks>          
         @cond INTERNAL
         documented by t.wilhelmer, 8.11.2015
         @endcond
         </remarks> 
         <param name="restAPI">In: RESTapi object with personalized x-apikey and userID. </param>
         <returns>New status for state machine. </returns>
        */
        public  Status dequeueExperiment(RestAPI restAPI)
        {
            try
            {
                expData = (GETExperimentResponse)restAPI.GETRequest(RequestEndpoint.experiment);
            }
            catch(Exception e)
            {
                logger.errorLog("An exception occurred in dequeueExperiment() using apis/engine/experiment/" + RequestEndpoint.experiment);
                logger.errorLog("Exception message:");
                logger.errorLog(e.Message);
                return Status.EXCEPTION;
            }

            logger.log("dequeueExperiment()");
            logger.log("(" + expData.timestamp + ") - " + expData.message + "\n");

            if (expData.success == true)
                return Status.PERFORMEXPERIMENT;
            else
            {
                errorReport = postExperimentRequest.errorReport;
                return Status.ERROR;
            }
        }