public CSCloudResponse Connect(CSCloudServerProxyHttp.ICSCloudServer server, CSCloudLogServerProxy.ICSCloudLogService logService) { if (server == null) throw new ArgumentNullException("server"); this.server = server; this.logService = logService; CSCloudResponse response = new CSCloudResponse(); CSCloudRequest request = new CSCloudRequest(); request.ClientName = this.GetName(); request.Command = new CSCloudCommand(); request.Command.Code = CSCloud.Enums.CSCloudCommandCode.CONNECT; response.Request = request; bool connected = false; try { connected = server.Connect(this.GetName(), ConfigurationManager.AppSettings[KEY_PASSWORD]); if (connected) { if (logService == null) { response.Result = CSCloud.Enums.CSCloudResult.WARNIG; var msg = string.Format("No Log Service is available , client {0} can not log it's activities", this.GetName()); response.Messages = new string[] { msg }; Debug.WriteLine(msg); } else { response.Result = CSCloud.Enums.CSCloudResult.SUCCESS; LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); } } else { response.Result = CSCloud.Enums.CSCloudResult.ERROR; LogResponse(response, CSCloud.Enums.CSCloudSeverity.WARNING); //TODO JBG Decide on how conditions like these are logged } } catch (Exception ex) { response.Result = CSCloud.Enums.CSCloudResult.ERROR; response.Messages = new string[] { ex.Message }; LogResponse(response, CSCloud.Enums.CSCloudSeverity.ERROR, response.ToString(), ex.StackTrace); } return response; }
public static void LogResponse(this ICSCloudLogService logService, CSCloudResponse response, CSCloud.Enums.CSCloudSeverity severity, string message = null, string stackTrace = null) { if (logService == null) return; try { if (response == null) throw new ArgumentNullException("response"); logService.Log(CSCloudLogEntry.FromResponse(response, severity, message, stackTrace)); } catch (Exception ex) { Debug.WriteLine(string.Format("Could not log response to Log Service: {2}\n{0}\n{1}", ex.Message, ex.StackTrace, response.ToString())); } }
public static CSCloudLogEntry FromResponse(CSCloudResponse response, CSCloudSeverity severity, string message, string stackTrace = null) { if (response == null) return null; CSCloudLogEntry log = new CSCloudLogEntry(); log.Date = DateTime.UtcNow; log.Severity = severity; StringBuilder sb = new StringBuilder(); sb.AppendLine(response.ToString()); if (message != null) sb.AppendLine().Append(message); if (stackTrace != null) sb.AppendLine().AppendLine(stackTrace); log.Message = sb.ToString(); return log; }
static void Main(string[] args) { Console.WriteLine("Connecting to the server..."); bool connected = false; CSCloudClient client = null; CSCloudServerProxyHttp.CSCloudServerClient server = null; CSCloudLogServerProxy.CSCloudLogServiceClient logService = null; try { client = new CSCloudClient(); server = new CSCloudServerProxyHttp.CSCloudServerClient(new InstanceContext(client)); logService = new CSCloudLogServerProxy.CSCloudLogServiceClient(); connected = client.Connect(server, logService).Result == CSCloud.Enums.CSCloudResult.ERROR; } catch (Exception ex) { Debug.WriteLine(string.Format("Could not connect to server: {0}\n{1}", ex.Message, ex.StackTrace)); } CSCloudResponse response = null; if (connected) { Console.WriteLine("Connected to the server."); Console.WriteLine("The client will exit automatically when all server commands have been completed."); response = new CSCloudResponse { Result = CSCloud.Enums.CSCloudResult.SUCCESS, }; client.LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); } else { Console.WriteLine("Could not connect to the server."); if (client != null) client.LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); } Console.WriteLine("Press [ENTER] to quit."); Console.ReadLine(); }
private CSCloudResponse Test(CSCloudRequest request) { CSCloudResponse response = new CSCloudResponse(); response.Request = request; try { response.Result = CSCloud.Enums.CSCloudResult.WARNIG; //TODO JBG Testing LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); //TODO JBG Success with warning condition } catch (Exception ex) { response.Result = CSCloud.Enums.CSCloudResult.ERROR; response.Messages = new string[] { ex.Message }; LogResponse(response, CSCloud.Enums.CSCloudSeverity.ERROR, response.ToString(), ex.StackTrace); } return response; }
private CSCloudResponse Report(CSCloudRequest request) { CSCloudResponse response = new CSCloudResponse(); response.Request = request; try { response.Result = CSCloud.Enums.CSCloudResult.ERROR; //TODO JBG Testing response.Messages = new string[] { "Nothing to report..." }; //TODO JBG LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); } catch (Exception ex) { response.Result = CSCloud.Enums.CSCloudResult.ERROR; response.Messages = new string[] { ex.Message }; LogResponse(response, CSCloud.Enums.CSCloudSeverity.ERROR, response.ToString(), ex.StackTrace); } return response; }
private CSCloudResponse InvalidCommand(CSCloudRequest request) { CSCloudResponse response = new CSCloudResponse(); response.Request = request; response.Result = CSCloud.Enums.CSCloudResult.ERROR; string err = string.Format("Invalid command: {0}", request.Command.Code.ToString()); response.Messages = new string[] { err }; LogResponse(response, CSCloud.Enums.CSCloudSeverity.ERROR); return response; }
private CSCloudResponse Disconnect(CSCloudRequest request) { CSCloudResponse response = new CSCloudResponse(); response.Request = request; try { response.Result = CSCloud.Enums.CSCloudResult.SUCCESS; LogResponse(response, CSCloud.Enums.CSCloudSeverity.INFO); server.Disconnect(this.GetName()); } catch (Exception ex) { response.Result = CSCloud.Enums.CSCloudResult.ERROR; response.Messages = new string[] { ex.Message }; LogResponse(response, CSCloud.Enums.CSCloudSeverity.ERROR, response.ToString(), ex.StackTrace); } return response; }
private void saveResponse(string clientName, CSCloudResponse response) { try { using (CSCloudEntities db = new CSCloudEntities()) { db.Commands.Add(CommandToModel(clientName, response.Request.Command, response.Result)); db.SaveChanges(); } } catch { } }