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 CSCloudServer()
        {
            CommandWorkFlow = ConfigurationManager.AppSettings[KEY_COMMAND_WORKFLOW].Split(',');
            CommandDelay = int.Parse(ConfigurationManager.AppSettings[KEY_COMMAND_DELAY]);
            logService = new CSCloudLogServerProxy.CSCloudLogServiceClient();

            clients.AllowNew = true;
            clients.AllowRemove = true;
            clients.AllowEdit = false;
            clients.RaiseListChangedEvents = true;
            clients.ListChanged += new ListChangedEventHandler(clients_ListChanged);

            ClientConnected += CSCloudClientConnected;
            CommandSent += CSCloudCommandSent;
        }