コード例 #1
0
        /************************************************************************
         * The Input: sender and an event.
         * The Output: -
         * The Function operation: The function is called when the handler is closed.
         *************************************************************************/
        public void OnHandlerClose(object sender, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler dirHandler = (IDirectoryHandler)sender;

            CommandReceived -= dirHandler.OnCommandRecieved;
            m_logging.Log("Stop handle directory " + e.Message, Logging.Modal.MessageTypeEnum.INFO);
        }
コード例 #2
0
 /// <summary>
 /// This method is called when command is received.
 /// </summary>
 /// <param name="sender">The command sender.</param>
 /// <param name="e">The command's arguments.</param>
 public void OnCommandRecieved(object sender, CommandRecievedEventArgs e) // The Event that will be activated upon new Command
 {                                                                        //checking if our path is the one the server intended to handle the command
     if (e.RequestDirPath.Equals(m_path) || e.RequestDirPath.Equals("*")) // Equals compares content
     {
         // if CloseCommand
         if (e.CommandID == (int)CommandEnum.CloseCommand) // == better for numbers
         {
             m_dirWatcher.EnableRaisingEvents = false;     // stop watching.
             string exitMsg = "Stoped handling the directory in path: " + m_path;
             DirectoryCloseEventArgs directoryCloseEventArgs = new DirectoryCloseEventArgs(m_path, exitMsg);
             DirectoryClose?.Invoke(this, directoryCloseEventArgs);
         }
         else // if other command
         {
             bool   success;
             string msg = m_controller.ExecuteCommand(e.CommandID, e.Args, out success);
             if (success)
             {
                 m_logging.Log(msg, MessageTypeEnum.INFO);
             }
             else
             {
                 m_logging.Log(msg, MessageTypeEnum.FAIL);
             }
         }
     }
 }
コード例 #3
0
        /// <summary>
        /// Delegate Commad, send the clients which directory was closed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void SendCloseHandler(object sender, DirectoryCloseEventArgs e)
        {
            JObject closeObj = new JObject
            {
                ["CommandEnum"] = (int)CommandEnum.CloseCommand,
                ["Directory"]   = e.DirectoryPath
            };
            string message = closeObj.ToString();
            int    size    = activeClients.Count;

            for (int i = 0; i < size; i++)
            {
                try
                {
                    {
                        activeClients[i].Item4.Write(message);
                    }
                }
                catch
                {
                    activeClients[i].Item2.Close();
                    activeClients.Remove(activeClients[i]);
                }
            }
        }
コード例 #4
0
ファイル: ImageServer.cs プロジェクト: giladmadmon/image_ex1
        /// <summary>
        /// close specific handler
        /// </summary>
        /// <param name="sender"> the object calling to this function </param>
        /// <param name="eventArgs"> the event args of closing a handler </param>
        private void CloseHandler(object sender, DirectoryCloseEventArgs eventArgs)
        {
            IDirectoryHandler dirHandler = (IDirectoryHandler)sender;

            CommandRecieved           -= dirHandler.OnCommandRecieved;
            dirHandler.DirectoryClose -= CloseHandler;
        }
コード例 #5
0
ファイル: ImageServer.cs プロジェクト: Efrat26/ImageService
 /// <summary>
 /// Raises the Close event.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="DirectoryCloseEventArgs" /> instance containing the event data.</param>
 public void OnClose(object sender, DirectoryCloseEventArgs e)
 {
     this.logging.Log("in on close of server", MessageTypeEnum.INFO);
     //
     this.CommandRecieved?.Invoke(this, new CommandRecievedEventArgs((int)CommandEnum.CloseCommand, null, null));
     this.logging.Log("after closing handlers", MessageTypeEnum.INFO);
 }
コード例 #6
0
        /**
         * the function close server after call to the close
         */
        public void closeServer(object sender, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler h = (IDirectoryHandler)sender;

            CommandRecieved -= h.OnCommandRecieved;
            m_logging.Log("close service: " + e.Message, MessageTypeEnum.INFO);
        }
コード例 #7
0
        /// <summary>
        /// When a command comes- checks what kind it is: if closing- its closes the service,
        /// otherwise its calls to ExecuteCommand and writes to the log sucsess\failure
        /// </summary>
        /// <param name="sender">the object called to the event</param>
        /// <param name="e">the event args required for this event</param>
        public void OnCommandRecieved(object sender, CommandRecievedEventArgs e)
        {
            bool   result;
            string message;

            if (e.CommandID == (int)CommandEnum.CloseCommand)
            {
                if (e.RequestDirPath.Equals("*") || e.RequestDirPath.Equals(m_path))
                {
                    m_dirWatcher.EnableRaisingEvents = false;
                    DirectoryCloseEventArgs dirCloseArgs = new DirectoryCloseEventArgs(m_path, "CLOSE");
                    DirectoryClose?.Invoke(this, dirCloseArgs);
                }
                return;
            }
            else
            {
                if (m_path == null || !e.RequestDirPath.Contains(m_path))
                {
                    return;
                }

                message = m_controller.ExecuteCommand(e.CommandID, e.Args, out result);
            }

            // write to the log
            if (result)
            {
                m_logging.Log(message, MessageTypeEnum.INFO);
            }
            else
            {
                m_logging.Log(message, MessageTypeEnum.FAIL);
            }
        }
コード例 #8
0
 public void OnCloseService(object send, DirectoryCloseEventArgs e)
 {
     m_logging.Log("closing handler for directory: " + m_path, MessageTypeEnum.INFO);
     m_dirWatcher.EnableRaisingEvents = false;
     m_dirWatcher.Dispose();
     DirectoryClose?.Invoke(this, e);
 }
コード例 #9
0
ファイル: ImageServer.cs プロジェクト: lantzme/imgserv_final
        /// <summary>
        /// This is a method for stopping a handler.
        /// </summary>
        /// <param name="sender">Raising object</param>
        /// <param name="eventArgs">Event arguments</param>
        private void StopHandler(object sender, DirectoryCloseEventArgs eventArgs)
        {
            var handler = (IDirectoryHandler)sender;

            // Stop the handler:
            CommandRecieved -= handler.OnCommandRecieved;
        }
コード例 #10
0
 /// <summary>
 /// handling the situation of closing the directory
 /// </summary>
 public void HandleClosing()
 {
     string message;
     try
     {
         //make each watcher stop filtering and watching
         foreach (FileSystemWatcher watcher in this.m_dirWatcher)
         {
             watcher.EnableRaisingEvents = false;
         }
         //log that this directory is closed
         message = m_path + "is no longer watched";
         DirectoryCloseEventArgs closing = new DirectoryCloseEventArgs(m_path, message);
         DirectoryClose?.Invoke(this, closing);
     }
     catch (Exception e)
     {
         //couldnt close the directory - log it
         message = "Error while trying to close " + m_path;
         m_logging.Log(message, MessageTypeEnum.INFO);
     }
     finally
     {
         //unsubscribe the "onCreated" func from the event
         foreach (FileSystemWatcher watch in this.m_dirWatcher)
         {
             watch.Created -= new FileSystemEventHandler(OnCreated);
         }
     }
 }
コード例 #11
0
        /// <summary>
        /// the function stops the handling of a specific directiory
        /// </summary>
        /// <param name= sender> the object that sent the request </param>
        /// <param name= e> the event that occured </param>
        public void CloseHandler(object sender, DirectoryCloseEventArgs e)
        {
            List <IDirectoryHandler> list = getHandlers();

            foreach (IDirectoryHandler handler in list)
            {
                if (e.DirectoryPath.Equals("*") || handler.GetPath().Equals(e.DirectoryPath))
                {
                    this.CommandRecieved -= handler.OnCommandRecieved;
                    this.logging.Log("Closing handler for " + e.DirectoryPath, MessageTypeEnum.INFO);
                    handler.DirectoryClose -= CloseHandler;
                    // delete handler
                    handler.StopHandleDirectory(e.DirectoryPath);
                    this.logging.Log("Closed handler for " + e.DirectoryPath, MessageTypeEnum.INFO);
                    string   path = e.DirectoryPath;
                    string[] args = { path };
                    // create info args
                    InfoEventArgs info = new InfoEventArgs((int)InfoEnums.CloseHandlerInfo, args);
                    // remove the handler from the app config handler list
                    ServiceInfo serviceInfo = ServiceInfo.CreateServiceInfo();
                    serviceInfo.RemoveHandler(e.DirectoryPath);
                    // notify all of the clients that the handler was closed
                    NotifyClients?.Invoke(this, info);
                }
            }
        }
コード例 #12
0
ファイル: ImageServer.cs プロジェクト: Elorl/ImageService
        /// <summary>
        /// removeHandler.
        /// remove handler from CommandRecieved event.
        /// </summary>
        /// <param name="source">source</param>
        /// <param name="args">arguments</param>
        public void removeHandler(object source, DirectoryCloseEventArgs args)
        {
            IDirectoryHandler toRemove = (IDirectoryHandler)source;

            this.CommandRecieved -= toRemove.OnCommandRecieved;
            this.m_logging.Log(args.Message, MessageTypeEnum.INFO);
            this.m_logging.Log("Handler closed", MessageTypeEnum.INFO);
        }
コード例 #13
0
        /// <summary>
        /// This function is called when the Handler is closed.
        /// </summary>
        /// <param name="sender"> The Hendler that was closed</param>
        /// <param name="args"></param>
        public void OnDirctoryClose(object sender, DirectoryCloseEventArgs args)
        {
            this.m_logging.Log("Close hendler", MessageTypeEnum.INFO);
            IDirectoyHandler handler = (IDirectoyHandler)sender;

            CommandRecieved -= handler.OnCommandRecieved;
            appConfigManager.Instance.clickRemove -= handler.OnRemove;
        }
コード例 #14
0
ファイル: ImageServer.cs プロジェクト: erm19/ImageService
        /// <summary>
        /// Deletes the handler.
        /// </summary>
        /// <param name="sender"> Sender. </param>
        /// <param name="e"> Event. </param>
        public void DeleteHandler(object sender, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler handler = (IDirectoryHandler)sender;

            CommandRecieved        -= handler.OnCommandRecieved;
            handler.DirectoryClose -= DeleteHandler;
            m_logging.Log(e.Message + "directory is closed", Logging.Modal.MessageTypeEnum.INFO);
        }
コード例 #15
0
        /// <summary>
        /// close specific handler
        /// </summary>
        /// <param name="sender"> the object calling to this function </param>
        /// <param name="eventArgs"> the event args of closing a handler </param>
        private void CloseHandler(object sender, DirectoryCloseEventArgs eventArgs)
        {
            IDirectoryHandler dirHandler = (IDirectoryHandler)sender;

            CommandRecieved           -= dirHandler.OnCommandRecieved;
            dirHandler.DirectoryClose -= CloseHandler;
            AppConfig.Instance.Folders.Remove(eventArgs.DirectoryPath);
        }
コード例 #16
0
        /// <summary>
        /// The function inform the server that a handler is done handle the dir.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public void closeServer(object sender, DirectoryCloseEventArgs args)
        {
            _mLogging.Log(args.Message, MessageTypeEnum.INFO);
            IDirectoryHandler handler = (IDirectoryHandler)sender;

            CommandRecieved        -= handler.OnCommandRecieved;
            handler.DirectoryClose -= closeServer;
        }
コード例 #17
0
ファイル: ImageServer.cs プロジェクト: orrpaz/ImageService
        /// <summary>
        /// this method remove handler.
        /// </summary>
        /// <param name="source">object that send the event</param>
        /// <param name="e">args for the event</param>
        public void RemoveHandler(object source, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler handler = (IDirectoryHandler)source;

            CommandRecieved        -= handler.OnCommandRecieved;
            handler.DirectoryClose -= RemoveHandler;
            m_logging.Log(e.Message, MessageTypeEnum.INFO);
        }
コード例 #18
0
ファイル: ImageServer.cs プロジェクト: abbyAlbum/ImageApp
        /// <summary>
        /// Closes the server and logs the result.
        /// Param: Object sender, DirectoryCloseEventArgs args.
        /// </summary>
        public void OnCloseServer(Object sender, DirectoryCloseEventArgs args)
        {
            IDirectoryHandler h = (IDirectoryHandler)sender;

            CommandRecieved  -= h.OnCommandRecieved;
            h.DirectoryClose -= OnCloseServer;
            m_logging.Log(args.DirectoryPath + args.Message, Logging.Modal.MessageTypeEnum.INFO);
        }
コード例 #19
0
ファイル: ImageServer.cs プロジェクト: Mazgana/ImageService
        /// <summary>
        /// Closing the server - handler will call this function to tell server it closed.
        /// </summary>
        /// <param name="sender"> Handler as sender. </param>
        /// <param name="e"> Information on the handler - dir and a message. </param>
        public void OnCloseServer(object sender, DirectoryCloseEventArgs e)
        {
            DirectoyHandler dh = (DirectoyHandler)sender;

            CommandRecieved   -= dh.OnCommandRecieved;
            dh.DirectoryClose -= OnCloseServer;
            CloseCommand      -= dh.OnClose;
        }
コード例 #20
0
        /// <summary>
        /// This function is invoked when filewatcher has an error
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnFileWatcherError(object sender, ErrorEventArgs e)
        {
            m_logging.Log(DateTime.Now.ToString() + " Error Detected In Handler Of Directory " + m_path, MessageTypeEnum.FAIL);
            DirectoryCloseEventArgs args = new DirectoryCloseEventArgs(m_path, e.GetException().ToString());

            DirectoryClose?.Invoke(this, args);
            CloseHandler();
        }
コード例 #21
0
        //informs the server that the handler has been closed
        public void OnCloseServer(object sender, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler closeHandler = (IDirectoryHandler)sender;

            this.CommandRecieved -= closeHandler.OnCommandRecieved; //removes the delegate of the current closed handler
            //informs the current handler has been closed
            this.m_logging.Log("The handler that handles the directory " + e.DirectoryPath + " has been closed", Logging.Modal.MessageTypeEnum.INFO);
        }
コード例 #22
0
        /// <summary>
        /// Closes the handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="d">The <see cref="DirectoryCloseEventArgs"/> instance containing the close command.</param>
        public void CloseHandler(object sender, DirectoryCloseEventArgs d)
        {
            IDirectoryHandler idh = (IDirectoryHandler)sender;

            CommandReceived    -= idh.OnCommandReceived;
            idh.DirectoryClose -= CloseHandler;
            handlersDict.Remove(d.DirectoryPath);
        }
コード例 #23
0
 /// <summary>
 /// This method is called when a directory is closing.
 /// </summary>
 /// <param name="sender">The command sender.</param>
 /// <param name="args">The directory close event arguments.</param>
 private void OnDirectoryClose(object sender, DirectoryCloseEventArgs args)
 {
     if (sender is IDirectoryHandler)
     {
         IDirectoryHandler directoryHandler = (IDirectoryHandler)sender;
         CommandRecieved -= directoryHandler.OnCommandRecieved;
         m_logging.Log(args.Message, MessageTypeEnum.INFO);
     }
 }
コード例 #24
0
        /// <summary>
        /// When a handler is closed, he will raise a event and this function will remove it from the CommandRecieved
        /// </summary>
        /// <param name="sender"> who was sent the event </param>
        /// <param name="d"> details about the handler </param>
        private void OnCloseHandler(object sender, DirectoryCloseEventArgs d)
        {
            IDirectoryHandler handler = (IDirectoryHandler)sender;

            CommandRecieved -= handler.OnCommandRecieved;
            m_appParsing.RemoveDir(handler.DirPath);
            RemoveHandlerFromClients(handler.DirPath);
            m_logging.Log(d.DirectoryPath + " " + d.Message, MessageTypeEnum.INFO);
        }
コード例 #25
0
        protected virtual void OnDirectoryClose(DirectoryCloseEventArgs e)
        {
            EventHandler <DirectoryCloseEventArgs> handler = DirectoryClose;

            if (handler != null)
            {
                handler(this, e);
            }
        }
コード例 #26
0
        /// <summary>
        /// Removes a handler
        /// </summary>
        /// <param name="object_sender">object sender</param>
        /// <param name="event_arguments">event data</param>
        public void RemoveHandler(object object_sender, DirectoryCloseEventArgs event_arguments)
        {
            DirectoryHandler dir_handler = (DirectoryHandler)object_sender;

            CommandReceived            -= dir_handler.OnCommandReceived;
            CloseServer                -= dir_handler.OnCloseHandler;
            dir_handler.CloseDirectory -= RemoveHandler;
            model_logging.Log("The " + event_arguments.Message + " dir was closed", MessageTypeEnum.INFO);
        }
コード例 #27
0
        /// <summary>
        /// Removes the handler.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DirectoryCloseEventArgs"/> instance containing the event data.</param>
        public void RemoveHandler(object sender, DirectoryCloseEventArgs e)
        {
            DirectoryHandler handler = (DirectoryHandler)sender;

            CommandReceived        -= handler.OnCommandReceived;
            CloseServer            -= handler.OnCloseHandler;
            handler.DirectoryClose -= RemoveHandler;
            m_logging.Log("The " + e.Message + " directory has been closed.", MessageTypeEnum.INFO);
        }
コード例 #28
0
 /// <summary>
 /// Closes the directory handler when required..
 /// </summary>
 /// <param name="source"></param>
 /// <param name="args"></param>
 public void CloseHandler(object source, DirectoryCloseEventArgs args)
 {
     if (source is IDirectoryHandler)
     {
         IDirectoryHandler handler = (IDirectoryHandler)source;
         // future
         //HandlerDispatchCommand -= handler.OnCommandRecieved;
     }
 }
コード例 #29
0
        /// <summary>
        /// EndHandle function.
        /// stop handle directory.
        /// </summary>
        public void EndHandle()
        {
            //disable watcher
            this.m_dirWatcher.EnableRaisingEvents = false;
            //raising DirectoryClose event
            DirectoryCloseEventArgs args = new DirectoryCloseEventArgs(this.m_path, "closing directory: " + this.m_path);

            DirectoryClose?.Invoke(this, args);
        }
コード例 #30
0
        /// <summary>
        /// Delegate to run when the handler is being closed.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void OnHandlerClose(object sender, DirectoryCloseEventArgs e)
        {
            IDirectoryHandler dirHandler = (IDirectoryHandler)sender;

            CommandRecieved -= dirHandler.OnCommandRecieved;
            this.handlers.Remove(dirHandler);
            m_logging.Log("Stop handle directory " + e.Message, Logging.Model.MessageTypeEnum.INFO);
            this.server.SendClose(sender, e);
        }