/// <summary> /// PUT Verb /// Initializes new session (request for new GUID create) /// GestationalAge is required, in case GA is less/more than accepted minimum/maximum 406 is returned /// </summary> /// <returns></returns> public Session InitSession(String GestationalAge) { int ga; bool bSucc = Int32.TryParse(GestationalAge, out ga); if (!bSucc || ga < 36 || ga > 42) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotAcceptable; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Init Session", "Gestational age doesn't meet the requrements"); return(new Session()); } var guidHndlr = GUIDHandler.Init(); var guidStr = guidHndlr.GenerateGUID(ga); if (guidStr.Equals(String.Empty)) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NoContent; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Init Session", "Failed to create Token"); return(null); } var curGuid = new Guid(guidStr); var engineHandle = guidHndlr.GetEngineHandle(curGuid); var session = new Session() { TokenId = guidStr, EngineHandle = engineHandle, GestationalAge = ga }; Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Init Session", "Token created successfully"); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Created; return(session); }
/// <summary> /// GET Verb /// Poll results /// </summary> /// <param name="Token"></param> public ArtifactsList GetResults(String Token) { var guidHndlr = GUIDHandler.Init(); var curGuid = new Guid(Token); bool bExist = guidHndlr.FindGuid(curGuid); if (!bExist) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Get Results", "GUID not found"); return(ArtifactsList.GetEmptyList()); } var session = guidHndlr.GetSession(curGuid); if (session == null) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NoContent; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Get Results", "Couldn't find session"); return(ArtifactsList.GetEmptyList()); } session.LastResultRequest = DateTime.Now; var listToRet = ArtifactsList.GetList(session); Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Get Results", "Results sent"); Logger.WriteLogEntry(TraceEventType.Verbose, "Patterns Add On Service, Patterns Service, Get Results", "Results sent for GUID: " + curGuid.ToString()); return(listToRet); }
public void StopTask() { var guidHndlr = GUIDHandler.Init(); guidHndlr.PurgeAll(); Host.Close(); Logger.WriteLogEntry(System.Diagnostics.TraceEventType.Information, "Patterns Add On Service, Add On Task, Service stop", "Service stopped"); }
/// <summary> /// DELETE Verb /// Closes specific session /// </summary> /// <param name="Token"></param> public void PurgeToken(String Token) { var guidHndlr = GUIDHandler.Init(); var curGuid = new Guid(Token); guidHndlr.DeleteGuid(curGuid); Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Delete Token", "Token deleted"); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK; }
/// <summary> /// DELETE Verb /// Remove all sessions /// </summary> public void PurgeAll() { var guidHndlr = GUIDHandler.Init(); bool bSucc = guidHndlr.PurgeAll(); Logger.WriteLogEntry(bSucc ? TraceEventType.Information : TraceEventType.Error, "Patterns Add On Service, Patterns Service, Init Session", bSucc ? "Tokens deleted successfully" : "Failed to delete all Tokens"); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK; }
/// <summary> /// GET Verb /// Get status of session, if GUID exists - returns the Token ID with status 200, /// otherwise empty Token ID with status 204 /// </summary> /// <param name="guid"></param> /// <returns></returns> public Session GetStatus(String Token) { var guidHndlr = GUIDHandler.Init(); var curGuid = new Guid(Token); bool bExist = guidHndlr.FindGuid(curGuid); Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Get Token Status", bExist ? "Token " + curGuid.ToString() + " found" : "Token not found"); WebOperationContext.Current.OutgoingResponse.StatusCode = bExist ? HttpStatusCode.OK : HttpStatusCode.NoContent; return(new Session() { TokenId = bExist ? curGuid.ToString() : String.Empty }); }
/// <summary> /// POST Verb /// Request for Patterns calculation. /// If Token found - returns Token ID with 202, otherwise no Toke with 204. /// </summary> /// <param name="Token">Token ID</param> /// <param name="inData">Input tracing data</param> /// <returns>TokenID</returns> public Session CalculatePatterns(String Token, TracingData inData) { var guidHndlr = GUIDHandler.Init(); var curGuid = new Guid(Token); bool bExist = guidHndlr.FindGuid(curGuid); if (!bExist) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Calculate Patterns", "GUID not found"); return(new Session() { TokenId = String.Empty }); } var session = guidHndlr.GetSession(curGuid); if (session == null) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NoContent; Logger.WriteLogEntry(TraceEventType.Error, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Couldn't find session"); return(new Session() { TokenId = curGuid.ToString() }); } // Check that results aren't stored for more than half an hour after last results request. var resultsLength = DateTime.Now - session.LastResultRequest; //System.Diagnostics.Trace.WriteLine("Last result request: " + resultsLength.TotalMinutes.ToString() + " ago"); if (resultsLength.TotalMinutes > Settings_MaxAmountOfResults) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotAcceptable; Logger.WriteLogEntry(TraceEventType.Critical, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Maximum size of results exceeded"); return(new Session() { TokenId = curGuid.ToString() }); } Logger.WriteLogEntry(TraceEventType.Verbose, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Session found for GUID: " + curGuid.ToString()); if (!session.AppendRequest(inData)) { WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NoContent; Logger.WriteLogEntry(TraceEventType.Critical, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Input slice length exceeded"); return(new Session() { TokenId = curGuid.ToString() }); } Logger.WriteLogEntry(TraceEventType.Information, "Patterns Add On Service, Patterns Service, Calculate Patterns", "Tracings accepted"); WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Accepted; return(new Session() { TokenId = curGuid.ToString() }); }