diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2006-07-24 15:50:21 +0000 |
commit | 3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c (patch) | |
tree | 197c810e5f5bce17b1233a7cb8d7b50c0bcd25e2 /TAO/examples/RTCORBA/Activity/Builder.cpp | |
parent | 6b846cf03c0bcbd8c276cb0af61a181e5f98eaae (diff) | |
download | ATCD-3aff90f4a822fcf5d902bbfbcc9fa931d6191a8c.tar.gz |
Repo restructuring
Diffstat (limited to 'TAO/examples/RTCORBA/Activity/Builder.cpp')
-rw-r--r-- | TAO/examples/RTCORBA/Activity/Builder.cpp | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/TAO/examples/RTCORBA/Activity/Builder.cpp b/TAO/examples/RTCORBA/Activity/Builder.cpp new file mode 100644 index 00000000000..1f4433aca95 --- /dev/null +++ b/TAO/examples/RTCORBA/Activity/Builder.cpp @@ -0,0 +1,145 @@ +//$Id$ +#include "Builder.h" + +#include "ace/Get_Opt.h" +#include "POA_Holder.h" +#include "Job_i.h" +#include "Thread_Task.h" +#include "Activity.h" + +Builder::Builder(void) + :poa_count_ (0), + poa_list_ (0), + task_count_ (0), + task_list_ (0), + job_count_ (0), + job_list_ (0) +{ + ACTIVITY::instance()->builder (this); +} + +Builder::~Builder(void) +{ + delete[] this->poa_list_; + delete[] this->task_list_; + delete[] this->job_list_; +} + +int +Builder::init (int argc, char *argv[]) +{ + ACE_Arg_Shifter arg_shifter (argc, argv); + + const ACE_TCHAR* current_arg = 0; + + int task_count = 0; + int poa_count = 0; + int job_count = 0; + + while (arg_shifter.is_anything_left ()) + { + if ((current_arg = arg_shifter.get_the_parameter ("-TaskCount"))) + { + task_count_ = ACE_OS::atoi (current_arg); + ACE_NEW_RETURN (task_list_, Periodic_Task*[task_count_], -1); + arg_shifter.consume_arg (); + } + if ((current_arg = arg_shifter.get_the_parameter ("-JobCount"))) + { + job_count_ = ACE_OS::atoi (current_arg); + ACE_NEW_RETURN (job_list_, Job_i*[job_count_], -1); + arg_shifter.consume_arg (); + } + if ((current_arg = arg_shifter.get_the_parameter ("-POACount"))) + { + poa_count_ = ACE_OS::atoi (current_arg); + ACE_NEW_RETURN (poa_list_, POA_Holder*[poa_count_], -1); + arg_shifter.consume_arg (); + } + else if (arg_shifter.cur_arg_strncasecmp ("-ThreadTask") == 0) + { + arg_shifter.consume_arg (); + + Periodic_Task *task = 0; + + ACE_NEW_RETURN (task, Thread_Task (), -1); + + if (task->init_task (arg_shifter) == -1) + return -1; + + task_list_[task_count++] = task; + } + else if (arg_shifter.cur_arg_strncasecmp ("-Job") == 0) + { + arg_shifter.consume_arg (); + + Job_i *job = 0; + + ACE_NEW_RETURN (job, Job_i (), -1); + + if (job->init (arg_shifter) == -1) + return -1; + + this->job_list_[job_count++] = job; + } + else if (arg_shifter.cur_arg_strncasecmp ("-POA") == 0) + { + arg_shifter.consume_arg (); + + POA_Holder *poa_holder; + + ACE_NEW_RETURN (poa_holder, POA_Holder (), -1); + + if (poa_holder->init (arg_shifter) == -1) + { + delete poa_holder; + return -1; + } + + this->poa_list_[poa_count++] = poa_holder; + } + else + { + arg_shifter.ignore_arg (); + } + } + + return 0; +} + +int +Builder::fini (void) +{ + return 0; +} + +int +Builder::poa_list (POA_LIST& poa_list) +{ + poa_list = poa_list_; + return poa_count_; +} + +int +Builder::task_list (TASK_LIST& task_list) +{ + task_list = task_list_; + return task_count_; +} + +int +Builder::job_list (JOB_LIST& job_list) +{ + job_list = job_list_; + return job_count_; +} + + +ACE_STATIC_SVC_DEFINE(Builder, + ACE_TEXT ("Builder"), + ACE_SVC_OBJ_T, + &ACE_SVC_NAME (Builder), + ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ, + 0) + +ACE_FACTORY_DEFINE (activity, Builder) |