00001
00002
00003 #include "orbsvcs/AV/default_resource.h"
00004
00005 #include "tao/ORB_Core.h"
00006 #include "tao/debug.h"
00007 #include "ace/OS_NS_strings.h"
00008
00009 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00010
00011 TAO_AV_Default_Resource_Factory::TAO_AV_Default_Resource_Factory (void)
00012 {
00013 if (TAO_debug_level > 0)
00014 ACE_DEBUG ((LM_DEBUG,
00015 "TAO_AV_Default_Resource_Factory::TAO_AV_Default_Resource_Factory %d\n"));
00016 }
00017
00018 TAO_AV_Default_Resource_Factory::~TAO_AV_Default_Resource_Factory (void)
00019 {
00020 TAO_AV_TransportFactorySetItor t_end = TAO_AV_CORE::instance ()->transport_factories ()->end ();
00021 for (TAO_AV_TransportFactorySetItor tfiterator =
00022 TAO_AV_CORE::instance ()->transport_factories ()->begin ();
00023 tfiterator != t_end;
00024 ++tfiterator)
00025 delete *tfiterator;
00026
00027 TAO_AV_CORE::instance ()->transport_factories ()->reset ();
00028
00029 TAO_AV_Flow_ProtocolFactorySetItor fp_end = TAO_AV_CORE::instance ()->flow_protocol_factories ()->end ();
00030 for (TAO_AV_Flow_ProtocolFactorySetItor pfiterator =
00031 TAO_AV_CORE::instance ()->flow_protocol_factories ()->begin ();
00032 pfiterator != fp_end;
00033 ++pfiterator)
00034 delete *pfiterator;
00035
00036 TAO_AV_CORE::instance ()->flow_protocol_factories ()->reset ();
00037
00038 if (TAO_debug_level > 0)
00039 ACE_DEBUG ((LM_DEBUG,
00040 "TAO_AV_Default_Resource_Factory::~TAO_AV_Default_Resource_Factory\n"));
00041 }
00042
00043 int
00044 TAO_AV_Default_Resource_Factory::init (int argc, char *argv[])
00045 {
00046 if (TAO_debug_level > 0)
00047 ACE_DEBUG ((LM_DEBUG,
00048 "TAO_AV_Default_Resource_Factory::init\n"));
00049
00050 int curarg = 0;
00051
00052 for (curarg = 0; curarg < argc; ++curarg)
00053 {
00054 if (ACE_OS::strcasecmp (argv[curarg],
00055 "-AVTransportFactory") == 0)
00056 {
00057 TAO_AV_TransportFactorySet *tset = TAO_AV_CORE::instance ()->transport_factories ();
00058 curarg++;
00059 if (curarg < argc)
00060 {
00061 TAO_AV_Transport_Item *item = 0;
00062 ACE_NEW_RETURN (item,
00063 TAO_AV_Transport_Item (argv[curarg]),
00064 -1);
00065 if (tset->insert (item) == -1)
00066 ACE_ERROR ((LM_ERROR,
00067 ACE_TEXT ("(%P|%t) Unable to add transport factories for %s: %p\n"),
00068 argv[curarg]));
00069 }
00070 }
00071 else if (ACE_OS::strcasecmp (argv[curarg],
00072 "-AVFlowProtocolFactory") == 0)
00073 {
00074 TAO_AV_Flow_ProtocolFactorySet *fpset = TAO_AV_CORE::instance ()->flow_protocol_factories ();
00075 curarg++;
00076 if (curarg < argc)
00077 {
00078 TAO_AV_Flow_Protocol_Item *item = 0;
00079 ACE_NEW_RETURN (item,
00080 TAO_AV_Flow_Protocol_Item (argv[curarg]),
00081 -1);
00082 if (fpset->insert (item) == -1)
00083 ACE_ERROR ((LM_ERROR,
00084 ACE_TEXT ("(%P|%t) Unable to add flow protocol factories for %s: %p\n"),
00085 argv[curarg]));
00086 }
00087 }
00088
00089 }
00090 return 0;
00091 }
00092
00093 TAO_END_VERSIONED_NAMESPACE_DECL
00094
00095
00096
00097
00098 ACE_STATIC_SVC_DEFINE (TAO_AV_Default_Resource_Factory,
00099 ACE_TEXT ("AV_Default_Resource_Factory"),
00100 ACE_SVC_OBJ_T,
00101 &ACE_SVC_NAME (TAO_AV_Default_Resource_Factory),
00102 ACE_Service_Type::DELETE_THIS
00103 | ACE_Service_Type::DELETE_OBJ,
00104 0)
00105 ACE_FACTORY_DEFINE (TAO_AV, TAO_AV_Default_Resource_Factory)
00106
00107