VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
publisherList.h
Go to the documentation of this file.
1 /*********************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************************/
5 
6 #pragma once
7 
11 
13 
14 #include <map>
15 
17 template <typename Publisher>
19 {
20 public:
23 
26  {
27 
28  }
29 
32  {
33  clear();
34  }
35 
37  void tick()
38  {
39  typename std::map<std::string, Publisher*>::iterator iter=myPublishers.begin();
40  for(iter; iter!=myPublishers.end(); ++iter)
41  {
42  iter->second->tick();
43  }
44  }
45 
47  void add(Publisher* pub)
48  {
49  myPublishers[pub->globalId().string()] = pub;
50  typename std::list<DtPublisherListDelegate*>::iterator iter=myAddedDelegates.begin();
51  for(iter; iter!=myAddedDelegates.end(); ++iter)
52  {
53  (*(*iter))(pub);
54  }
55  }
57  void add(Publisher* pub, const std::string& id)
58  {
59  myPublishers[id] = pub;
60  typename std::list<DtPublisherListDelegate*>::iterator iter = myAddedDelegates.begin();
61  for (iter; iter != myAddedDelegates.end(); ++iter)
62  {
63  (*(*iter))(pub);
64  }
65  }
66 
68  void remove(Publisher* pub)
69  {
70  myPublishers.erase(pub->globalId().string());
71  typename std::list<DtPublisherListDelegate*>::iterator iter=myRemovedDelegates.begin();
72  for(iter; iter!=myRemovedDelegates.end(); ++iter)
73  {
74  DtPublisherListDelegate* del=(*iter);
75  (*del)(pub);
76  }
77  }
78 
80  void remove(const std::string& id)
81  {
82  Publisher* pub = myPublishers[id];
83  myPublishers.erase(id);
84  typename std::list<DtPublisherListDelegate*>::iterator iter = myRemovedDelegates.begin();
85  for (iter; iter != myRemovedDelegates.end(); ++iter)
86  {
87  DtPublisherListDelegate* del = (*iter);
88  (*del)(pub);
89  }
90  }
91 
93  Publisher* find(std::string id)
94  {
95  return myPublishers[id];
96  }
97 
100  {
101  myAddedDelegates.push_back(del);
102  }
103 
106  {
107  myAddedDelegates.remove(del);
108  }
109 
112  {
113  myRemovedDelegates.push_back(del);
114  }
115 
118  {
119  myRemovedDelegates.remove(del);
120  }
121 
123  typename std::map< std::string, Publisher* >::iterator begin()
124  {
125  return myPublishers.begin();
126  }
127 
129  typename std::map< std::string, Publisher*>::iterator end()
130  {
131  return myPublishers.end();
132  }
133 
135  void clear()
136  {
137  typename std::map<std::string, Publisher*>::iterator iter=myPublishers.begin();
138  for(iter; iter!=myPublishers.end(); ++iter)
139  {
140  delete (iter->second);
141  }
142  myPublishers.clear();
143 
144  typename std::list<DtPublisherListDelegate*>::iterator iter2=myAddedDelegates.begin();
145  for(iter2; iter2!=myAddedDelegates.end(); ++iter2)
146  {
147  delete (*iter2);
148  }
149  myAddedDelegates.clear();
150 
151  typename std::list<DtPublisherListDelegate*>::iterator iter3=myRemovedDelegates.begin();
152  for(iter3; iter3!=myRemovedDelegates.end(); ++iter3)
153  {
154  delete (*iter3);
155  }
156  myRemovedDelegates.clear();
157  }
158 
159 protected:
160  typename std::map< std::string, Publisher*> myPublishers;
161  std::list<DtPublisherListDelegate*> myAddedDelegates;
162  std::list<DtPublisherListDelegate*> myRemovedDelegates;
163 };

Document ID: Generated on Fri Dec 2 02:42:08 EST 2016 from SVN revision 171416
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)