EMANE  1.2.1
layerfactorymanager.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 - Adjacent Link LLC, Bridgewater, New Jersey
3  * Copyright (c) 2008 - DRS CenGen, LLC, Columbia, Maryland
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * * Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in
14  * the documentation and/or other materials provided with the
15  * distribution.
16  * * Neither the name of DRS CenGen, LLC nor the names of its
17  * contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31  * POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 #include "layerfactorymanager.h"
35 
37 
39 {
40  MACLayerFactoryMap::iterator macIter = macLayerFactoryMap_.begin();
41 
42  for(;macIter != macLayerFactoryMap_.end(); ++macIter)
43  {
44  delete macIter->second;
45  }
46 
47  PHYLayerFactoryMap::iterator phyIter = phyLayerFactoryMap_.begin();
48 
49  for(;phyIter != phyLayerFactoryMap_.end(); ++phyIter)
50  {
51  delete phyIter->second;
52  }
53 
54  ShimLayerFactoryMap::iterator shimIter = shimLayerFactoryMap_.begin();
55 
56  for(;shimIter != shimLayerFactoryMap_.end(); ++shimIter)
57  {
58  delete shimIter->second;
59  }
60 }
61 
63 EMANE::LayerFactoryManager::getMACLayerFactory(const std::string & sLibraryFile)
64 {
65  MACLayerFactoryMap::iterator iter;
66 
67  if((iter = macLayerFactoryMap_.find(sLibraryFile)) != macLayerFactoryMap_.end())
68  {
69  return *iter->second;
70  }
71  else
72  {
73  MACLayerFactory * pFactory =
74  new MACLayerFactory(sLibraryFile);
75 
76  macLayerFactoryMap_.insert(std::make_pair(sLibraryFile,pFactory));
77  return *pFactory;
78  }
79 }
80 
82 EMANE::LayerFactoryManager::getPHYLayerFactory(const std::string & sLibraryFile)
83 {
84  PHYLayerFactoryMap::iterator iter;
85 
86  if((iter = phyLayerFactoryMap_.find(sLibraryFile)) != phyLayerFactoryMap_.end())
87  {
88  return *iter->second;
89  }
90  else
91  {
92  PHYLayerFactory * pFactory =
93  new PHYLayerFactory(sLibraryFile);
94 
95  phyLayerFactoryMap_.insert(std::make_pair(sLibraryFile,pFactory));
96  return *pFactory;
97  }
98 }
99 
101 EMANE::LayerFactoryManager::getShimLayerFactory(const std::string & sLibraryFile)
102 {
103  ShimLayerFactoryMap::iterator iter;
104 
105  if((iter = shimLayerFactoryMap_.find(sLibraryFile)) != shimLayerFactoryMap_.end())
106  {
107  return *iter->second;
108  }
109  else
110  {
111  ShimLayerFactory * pFactory =
112  new ShimLayerFactory(sLibraryFile);
113 
114  shimLayerFactoryMap_.insert(std::make_pair(sLibraryFile,pFactory));
115  return *pFactory;
116  }
117 }
const MACLayerFactory & getMACLayerFactory(const std::string &sLibraryFile)
LayerFactory< MACLayerImplementor > MACLayerFactory
const ShimLayerFactory & getShimLayerFactory(const std::string &sLibraryFile)
const PHYLayerFactory & getPHYLayerFactory(const std::string &sLibraryFile)
Factory for creating T layers . The factory manages the DLL allowing for the creation of layers of th...
Definition: layerfactory.h:53
LayerFactory< ShimLayerImplementor > ShimLayerFactory