118 private: |
118 private: |
119 virtual void Connect (std::string path, CallbackBase const &cb, const TraceContext &context); |
119 virtual void Connect (std::string path, CallbackBase const &cb, const TraceContext &context); |
120 virtual void Disconnect (std::string path, CallbackBase const &cb); |
120 virtual void Disconnect (std::string path, CallbackBase const &cb); |
121 virtual void CollectSources (std::string path, const TraceContext &context, |
121 virtual void CollectSources (std::string path, const TraceContext &context, |
122 SourceCollection *collection); |
122 SourceCollection *collection); |
123 virtual void ConnectPrinterToAll (std::ostream &os, const TraceContext &context); |
123 virtual void TraceAll (std::ostream &os, const TraceContext &context); |
124 friend class CompositeTraceResolverTest; |
124 friend class CompositeTraceResolverTest; |
125 class ResolveItem |
125 class ResolveItem |
126 { |
126 { |
127 public: |
127 public: |
128 virtual ~ResolveItem () {} |
128 virtual ~ResolveItem () {} |
129 virtual void Connect (std::string subpath, const CallbackBase &cb, const TraceContext &context) = 0; |
129 virtual void Connect (std::string subpath, const CallbackBase &cb, const TraceContext &context) = 0; |
130 virtual void Disconnect (std::string subpath, const CallbackBase &cb) = 0; |
130 virtual void Disconnect (std::string subpath, const CallbackBase &cb) = 0; |
131 virtual void CollectSources (std::string path, const TraceContext &context, |
131 virtual void CollectSources (std::string path, const TraceContext &context, |
132 SourceCollection *collection) = 0; |
132 SourceCollection *collection) = 0; |
133 virtual void ConnectPrinterToAll (std::ostream &os, const TraceContext &context) = 0; |
133 virtual void TraceAll (std::ostream &os, const TraceContext &context) = 0; |
134 |
134 |
135 std::string name; |
135 std::string name; |
136 TraceContext context; |
136 TraceContext context; |
137 }; |
137 }; |
138 typedef std::vector<ResolveItem *> TraceItems; |
138 typedef std::vector<ResolveItem *> TraceItems; |
199 path.append (this->name); |
199 path.append (this->name); |
200 TraceContext ctx = context; |
200 TraceContext ctx = context; |
201 ctx.Union (this->context); |
201 ctx.Union (this->context); |
202 array->CollectSources (path, ctx, collection); |
202 array->CollectSources (path, ctx, collection); |
203 } |
203 } |
204 virtual void ConnectPrinterToAll (std::ostream &os, const TraceContext &context) |
204 virtual void TraceAll (std::ostream &os, const TraceContext &context) |
205 { |
205 { |
206 TraceContext ctx = context; |
206 TraceContext ctx = context; |
207 ctx.Union (this->context); |
207 ctx.Union (this->context); |
208 array->ConnectPrinterToAll (os, ctx); |
208 array->TraceAll (os, ctx); |
209 } |
209 } |
210 |
210 |
211 Ptr<ArrayTraceResolver<INDEX> > array; |
211 Ptr<ArrayTraceResolver<INDEX> > array; |
212 } *item = new ArrayResolveItem (); |
212 } *item = new ArrayResolveItem (); |
213 item->name = name; |
213 item->name = name; |