MulticastLoader.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include "MulticastLoader.h"
00009 #include "MulticastInst.h"
00010
00011 #include "dds/DCPS/transport/framework/TransportRegistry.h"
00012 #include "dds/DCPS/transport/framework/TransportType.h"
00013
00014 namespace {
00015 const char MULTICAST_NAME[] = "multicast";
00016 }
00017
00018 OPENDDS_BEGIN_VERSIONED_NAMESPACE_DECL
00019
00020 namespace OpenDDS {
00021 namespace DCPS {
00022
00023 class MulticastType : public TransportType {
00024 public:
00025 const char* name() { return MULTICAST_NAME; }
00026
00027 TransportInst_rch new_inst(const std::string& name)
00028 {
00029 return make_rch<MulticastInst>(name);
00030 }
00031 };
00032
00033 int
00034 MulticastLoader::init(int , ACE_TCHAR* [])
00035 {
00036 static bool initialized(false);
00037
00038 if (initialized) return 0;
00039
00040 TransportRegistry* registry = TheTransportRegistry;
00041 registry->register_type(make_rch<MulticastType>());
00042 TransportConfig_rch cfg =
00043 registry->get_config(TransportRegistry::DEFAULT_CONFIG_NAME);
00044
00045 TransportInst_rch default_unrel =
00046 registry->create_inst(TransportRegistry::DEFAULT_INST_PREFIX
00047 + std::string("0410_MCAST_UNRELIABLE"),
00048 MULTICAST_NAME);
00049 MulticastInst* mi = dynamic_cast<MulticastInst*>(default_unrel.in());
00050 if (!mi) {
00051 ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("(%P|%t) MulticastLoader::init:")
00052 ACE_TEXT(" failed to obtain MulticastInst.\n")), -1);
00053 }
00054 mi->reliable_ = false;
00055 cfg->sorted_insert(default_unrel);
00056
00057 TransportInst_rch default_rel =
00058 registry->create_inst(TransportRegistry::DEFAULT_INST_PREFIX
00059 + std::string("0420_MCAST_RELIABLE"), MULTICAST_NAME);
00060 cfg->sorted_insert(default_rel);
00061
00062 initialized = true;
00063
00064 return 0;
00065 }
00066
00067 ACE_FACTORY_DEFINE(OpenDDS_Multicast, MulticastLoader)
00068 ACE_STATIC_SVC_DEFINE(
00069 MulticastLoader,
00070 ACE_TEXT("OpenDDS_Multicast"),
00071 ACE_SVC_OBJ_T,
00072 &ACE_SVC_NAME(MulticastLoader),
00073 ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
00074 0)
00075
00076 }
00077 }
00078
00079 OPENDDS_END_VERSIONED_NAMESPACE_DECL