summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp b/TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp
new file mode 100644
index 00000000000..9becba79e1c
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/Security/Security_Current.cpp
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+
+#include "Security_Current.h"
+
+ACE_RCSID (TAO_Security,
+ Security_Current,
+ "$Id$")
+
+#if !defined (__ACE_INLINE__)
+# include "Security_Current.inl"
+#endif /* __ACE_INLINE__ */
+
+TAO_Security_Current::TAO_Security_Current (size_t tss_slot,
+ const char *orb_id)
+ : tss_slot_ (tss_slot),
+ orb_id_ (orb_id),
+ orb_core_ (0)
+{
+}
+
+TAO_Security_Current::~TAO_Security_Current (void)
+{
+}
+
+Security::AttributeList *
+TAO_Security_Current::get_attributes (
+ const Security::AttributeTypeList &attributes,
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_Security_Current_Impl *impl = this->implementation ();
+
+ // If the implementation pointer returned from TSS is zero, then
+ // we're not in the middle of a request/upcall. Throw an exception
+ // to indicate that.
+ if (impl == 0)
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (), 0);
+
+ return impl->get_attributes (attributes, ACE_TRY_ENV);
+}
+
+SecurityLevel2::ReceivedCredentials_ptr
+TAO_Security_Current::received_credentials (
+ CORBA::Environment &ACE_TRY_ENV)
+ ACE_THROW_SPEC ((CORBA::SystemException))
+{
+ TAO_Security_Current_Impl *impl = this->implementation ();
+
+ // If the implementation pointer returned from TSS is zero, then
+ // we're not in the middle of a request/upcall. Throw an exception
+ // to indicate that.
+ if (impl == 0)
+ ACE_THROW_RETURN (CORBA::BAD_INV_ORDER (), 0);
+
+ return impl->received_credentials (ACE_TRY_ENV);
+}
+
+int
+TAO_Security_Current::init (void)
+{
+ int result = 0;
+
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ int argc = 0;
+ char **argv = 0;
+ CORBA::ORB_var orb = CORBA::ORB_init (argc,
+ argv,
+ this->orb_id_.in (),
+ ACE_TRY_ENV);
+ ACE_TRY_CHECK;
+
+ this->orb_core_ = orb.in ()->orb_core ();
+
+ // No longer need the ORBid, so reclaim the memory it was
+ // occupying.
+ (void) this->orb_id_.out ();
+ }
+ ACE_CATCHANY
+ {
+ if (TAO_debug_level >= 1)
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ "Could not initialize SecurityCurrent:");
+
+ result = -1;
+ }
+ ACE_ENDTRY;
+ ACE_CHECK_RETURN (-1);
+
+ return result;
+}