diff options
Diffstat (limited to 'ace/Process_Manager.h')
-rw-r--r-- | ace/Process_Manager.h | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/ace/Process_Manager.h b/ace/Process_Manager.h deleted file mode 100644 index f9ddd2b05f5..00000000000 --- a/ace/Process_Manager.h +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// ace -// -// = FILENAME -// Process_Manager.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#ifndef ACE_PROCESS_MANAGER_H -#define ACE_PROCESS_MANAGER_H - -#include "ace/Synch.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Process.h" - -class ACE_Export ACE_Process_Descriptor -{ - // = TITLE - // Information for controlling groups of processs. -private: - friend class ACE_Process_Manager; - - ACE_Process_Descriptor (void); - ~ACE_Process_Descriptor (void); - // Default ctor/dtor. - - pid_t proc_id_; - // Unique process ID. - - gid_t grp_id_; - // Unique group ID. - - void dump (void) const; - // Dump the state of an object. -}; - -class ACE_Export ACE_Process_Manager -{ - // = TITLE - // Manages a pool of processs. - // - // = DESCRIPTION - // This class allows operations on groups of processs atomically. -public: - friend class ACE_Process_Control; - - enum - { - DEFAULT_SIZE = 100 - }; - - // = Initialization and termination methods. - ACE_Process_Manager (size_t size = ACE_Process_Manager::DEFAULT_SIZE); - ~ACE_Process_Manager (void); - - int open (size_t size = DEFAULT_SIZE); - // Initialize the manager with room for SIZE processs. - - int close (void); - // Release all resources. - - pid_t spawn (ACE_Process_Options &options); - // Create a new process using ACE_Process::start (<options>). - - // Returns: on success a unique group id that can be used to control - // other processs added to the same group. On failure, returns -1. - - int spawn_n (size_t n, ACE_Process_Options &options); - // Create N new processs. - - // Returns: on success a unique group id that can be used to control - // all of the processs in the same group. On failure, returns -1. - - int wait (ACE_Time_Value *timeout = 0); - // Block until there are no more processs running or <timeout> - // expires. Returns 0 on success and -1 on failure. - - int terminate (pid_t pid); - // Terminate a single process with id <pid>. - - int remove (pid_t pid); - // Remove process <pid> from the table. This is typically called by - // a signal handler that has just reaped <SIGCHILD>. - - int reap (pid_t pid = -1, int *stat_loc = 0, int options = WNOHANG); - // Reap a <SIGCHLD> by calling <ACE_OS::waitpid>. - - void dump (void) const; - // Dump the state of an object. - - ACE_ALLOC_HOOK_DECLARE; - // Declare the dynamic allocation hooks. - -private: - int resize (size_t); - // Resize the pool of Process_Descriptors. - - int find_proc (pid_t p_id); - // Locate the index of the table slot occupied by <p_id>. Returns - // -1 if <p_id> is not in the table doesn't contain <p_id>. - - int insert_proc (pid_t p_id); - // Insert a process in the table (checks for duplicates). - // Omitting the process handle won't work on Win32... - - int append_proc (pid_t p_id); - // Append a process in the table (adds at the end, growing the table - // if necessary). - - ACE_Process_Descriptor *proc_table_; - // Vector that describes process state within the Process_Manager. - - size_t max_table_size_; - // Maximum number of processs we can manage (should be dynamically - // allocated). - - size_t current_count_; - // Current number of processs we are managing. - - // = ACE_Thread_Mutex and condition variable for synchronizing termination. -#if defined (ACE_HAS_THREADS) - ACE_Thread_Mutex lock_; - ACE_Condition_Thread_Mutex zero_cond_; -#endif /* ACE_HAS_THREADS */ -}; - -#if defined (__ACE_INLINE__) -#include "ace/Process_Manager.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_PROCESS_MANAGER_H */ - |