summaryrefslogtreecommitdiff
path: root/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp')
-rw-r--r--CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp b/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
new file mode 100644
index 00000000000..088a426505c
--- /dev/null
+++ b/CIAO/tools/Config_Handlers/RT-CCM/PM_Handler.cpp
@@ -0,0 +1,73 @@
+// $Id$
+
+#include "PM_Handler.h"
+#include "CIAOServerResources.hpp"
+#include "ace/Auto_Ptr.h"
+
+namespace CIAO
+{
+ namespace Config_Handlers
+ {
+
+ bool
+ PM_Handler::priority_model_pd (const PriorityModelPolicyDef &src,
+ ::CIAO::DAnCE::PriorityModelPolicyDef &dest)
+ {
+ switch (src.priority_model ().integral ())
+ {
+ case PriorityModel::SERVER_DECLARED_l:
+ dest.priority_model = ::CIAO::DAnCE::SERVER_DECLARED;
+ break;
+
+ case PriorityModel::CLIENT_PROPAGATED_l:
+ dest.priority_model = ::CIAO::DAnCE::CLIENT_PROPAGATED;
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Unknown priority model passed to priority_model_pd\n"));
+ return false;
+ }
+
+ if (src.server_priority_p ())
+ dest.server_priority = static_cast < ACE_INT32 > (src.server_priority ());
+ else
+ dest.server_priority = 0;
+
+ return true;
+ }
+
+
+ PriorityModelPolicyDef
+ PM_Handler::priority_model_pd (const ::CIAO::DAnCE::PriorityModelPolicyDef &src)
+ {
+ auto_ptr <PriorityModelPolicyDef> pmd;
+
+ switch (src.priority_model)
+ {
+ case ::CIAO::DAnCE::CLIENT_PROPAGATED:
+ pmd.reset (new PriorityModelPolicyDef (PriorityModel::CLIENT_PROPAGATED));
+ break;
+
+ case ::CIAO::DAnCE::SERVER_DECLARED:
+ pmd.reset (new PriorityModelPolicyDef (PriorityModel::SERVER_DECLARED));
+ break;
+
+ default:
+ ACE_ERROR ((LM_ERROR,
+ "Invalid priority model given to priority_model_pd\n"));
+ throw 1;
+ }
+
+ pmd->server_priority (XMLSchema::int_ (src.server_priority));
+
+ return *pmd;
+ }
+
+
+ }
+
+
+
+}
+