[Boost.process] GSoc proposal

Hi, I have decided to polish up the current boost.process this summer. It has been on the list far too many times without much further progress. After checking out the code I've begun working, so I need to start working on the new API which I intend to be similar to boost.thread. Are there any volunteering mentors? class process { class id; class status; class priority; typedef std::bitset<?> affinity_type; static process& this_process(); static std::vector<process> processes(); static std::vector<process> processes(const std::string& machine); static std::vector<process> processes_by_name(const std::string& name); static std::vector<process> processes_by_name(const std::string& name, const std::string& machine_name); static process start(const std::string& proc); static process start(const std::string& proc, const std::string& params); const id& get_id() const throw(); void terminate(bool kill = false ); status wait(); status idle_wait(); const boost::posix_time::ptime& start_time() const; affinity_type processor_affinity() const throw(); void processor_affinity(const affinity_type& affinity); const priority& priority() const throw(); void priority(const priority& new_priority) const throw(); postream& standard_input() const; pistream& standard_output() const; pistream& standard_error() const; boost::posix_time::time_duration kernel_time() const; boost::posix_time::time_duration user_time() const; boost::posix_time::time_duration total_time() const; const void* max_working_set() const; void max_working_set(const void* value); const void* min_working_set() const; void min_working_set(const void* value); uintmax_t peak_paged_memory() const; uintmax_t peak_private_memory() const; uintmax_t peak_virtual_memory() const; uintmax_t peak_working_memory() const; uintmax_t paged_system_memory() const; uintmax_t paged_memory() const; uintmax_t private_memory() const; uintmax_t virtual_memory() const; uintmax_t working_memory() const; }; With Best Regards Mr. Kasra Nassiri Department of Computer Science Imperial College London

Kasra wrote:
Are there any volunteering mentors?
I have only some comments based upon what you presented here:
class process { [snip] static process& this_process();
s/this_process/self/
static std::vector<process> processes(const std::string& machine);
That implies network communication to retrieve a list of processes from remote systems, right? That seems out of scope.
static std::vector<process> processes_by_name(const std::string& name); static std::vector<process> processes_by_name(const std::string& name, const std::string& machine_name);
Without the machine overload of processes(), these two can be renamed "processes."
const id& get_id() const throw();
s/get_id/id/
void terminate(bool kill = false );
bool is a bad argument type for that use. An enumerated type makes the function argument be something with a self-documenting name. That is, p.terminate(false) means don't terminate? Then why call the function? I presume that function throws if unable to terminate the process?
affinity_type processor_affinity() const throw(); void processor_affinity(const affinity_type& affinity);
Is there another affinity to disambiguate? If not, s/processor_affinity/affinity/.
boost::posix_time::time_duration kernel_time() const; boost::posix_time::time_duration user_time() const; boost::posix_time::time_duration total_time() const;
Wouldn't those be better combined into a single function that returns a tuple?
const void* max_working_set() const; void max_working_set(const void* value);
const void* min_working_set() const; void min_working_set(const void* value);
uintmax_t peak_paged_memory() const; uintmax_t peak_private_memory() const; uintmax_t peak_virtual_memory() const; uintmax_t peak_working_memory() const;
uintmax_t paged_system_memory() const; uintmax_t paged_memory() const; uintmax_t private_memory() const; uintmax_t virtual_memory() const; uintmax_t working_memory() const;
Are those really questions for a process class or for a memory manager class to which a process is passed? _____ Rob Stewart robert.stewart@sig.com Software Engineer, Core Software using std::disclaimer; Susquehanna International Group, LLP http://www.sig.com IMPORTANT: The information contained in this email and/or its attachments is confidential. If you are not the intended recipient, please notify the sender immediately by reply and immediately delete this message and all its attachments. Any review, use, reproduction, disclosure or dissemination of this message or any attachment by an unintended recipient is strictly prohibited. Neither this message nor any attachment is intended as or should be construed as an offer, solicitation or recommendation to buy or sell any security or other financial instrument. Neither the sender, his or her employer nor any of their respective affiliates makes any warranties as to the completeness or accuracy of any of the information contained herein or that this message or any of its attachments is free of viruses.

On Sun, 04 Apr 2010 18:27:25 +0300, Kasra <kasra_n500@yahoo.com> wrote: Hi Kasra,
I have decided to polish up the current boost.process this summer. It has been on the list far too many times without much further progress.
After checking out the code I've begun working, so I need to start working on the new API which I intend to be similar to boost.thread.
thanks for your interest in Boost.Process! If you intend to work on Boost.Process within the GSoC program you need to create a GSoC application (see http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs#s...). I recommend to postpone discussing the interface of the process class if you want to join the GSoC program in time (application period ends April 9th!). Boris
[...]
participants (3)
-
Boris Schaeling
-
Kasra
-
Stewart, Robert