Go to the documentation of this file.00001
00002
00003
00004 #include "QoS_Session_Factory.h"
00005 #include "QoS_Session_Impl.h"
00006 #include "ace/Log_Msg.h"
00007
00008 ACE_RCSID(ace, QoS_Session_Factory, "$Id: QoS_Session_Factory.cpp 80826 2008-03-04 14:51:23Z wotte $")
00009
00010 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00011
00012 ACE_ALLOC_HOOK_DEFINE(ACE_QoS_Session_Factory)
00013
00014 #if defined(ACE_HAS_RAPI)
00015 const enum ACE_QoS_Session_Factory::ACE_QoS_Session_Type
00016 ACE_QoS_Session_Factory::ACE_DEFAULT_QOS_SESSION = ACE_QoS_Session_Factory::ACE_RAPI_SESSION;
00017 #elif defined(ACE_HAS_WINSOCK2_GQOS)
00018 const enum ACE_QoS_Session_Factory::ACE_QoS_Session_Type
00019 ACE_QoS_Session_Factory::ACE_DEFAULT_QOS_SESSION = ACE_QoS_Session_Factory::ACE_GQOS_SESSION;
00020 #else
00021 # error "QoS type not supported. Cannot build."
00022 #endif
00023
00024 ACE_QoS_Session_Factory::ACE_QoS_Session_Factory (void)
00025 {
00026 ACE_TRACE ("ACE_QoS_Session_Factory::ACE_QoS_Session_Factory");
00027 }
00028
00029 ACE_QoS_Session_Factory::~ACE_QoS_Session_Factory (void)
00030 {
00031 ACE_TRACE ("ACE_QoS_Session_Factory::~ACE_QoS_Session_Factory");
00032 }
00033
00034
00035 ACE_QoS_Session *
00036 ACE_QoS_Session_Factory::create_session (ACE_QoS_Session_Type qos_session_type)
00037 {
00038
00039 ACE_QoS_Session * qos_session = 0;
00040
00041 #if defined (ACE_HAS_RAPI)
00042 if (qos_session_type == ACE_RAPI_SESSION)
00043 ACE_NEW_RETURN (qos_session,
00044 ACE_RAPI_Session,
00045 0);
00046 #endif
00047
00048 if (qos_session_type == ACE_GQOS_SESSION)
00049 ACE_NEW_RETURN (qos_session,
00050 ACE_GQoS_Session,
00051 0);
00052
00053 if (this->add_session (qos_session) == -1)
00054 {
00055 delete qos_session;
00056 ACE_ERROR_RETURN ((LM_ERROR,
00057 ACE_TEXT ("Error in adding session\n")),
00058 0);
00059 }
00060
00061 return qos_session;
00062 }
00063
00064
00065 int
00066 ACE_QoS_Session_Factory::destroy_session (ACE_QoS_Session *qos_session)
00067 {
00068
00069 if ((qos_session != 0) && (this->remove_session (qos_session) == -1))
00070 ACE_ERROR_RETURN ((LM_ERROR,
00071 ACE_TEXT ("Error in destroying session\n")),
00072 -1);
00073
00074 return 0;
00075 }
00076
00077
00078
00079 int
00080 ACE_QoS_Session_Factory::add_session (ACE_QoS_Session *qos_session)
00081 {
00082 if (this->qos_session_set_.insert (qos_session) != 0)
00083 ACE_ERROR_RETURN ((LM_ERROR,
00084 ACE_TEXT ("Error in adding a new session")
00085 ACE_TEXT ("to the session set\n")),
00086 -1);
00087
00088 return 0;
00089 }
00090
00091
00092
00093 int
00094 ACE_QoS_Session_Factory::remove_session (ACE_QoS_Session *qos_session)
00095 {
00096 if (this->qos_session_set_.remove (qos_session) == -1)
00097 ACE_ERROR_RETURN ((LM_ERROR,
00098 ACE_TEXT ("Error in removing a session")
00099 ACE_TEXT ("from the session set\n")),
00100 -1);
00101
00102 return 0;
00103 }
00104
00105 ACE_END_VERSIONED_NAMESPACE_DECL