libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
libzypp
Welcome to libzypp
Code Pitfalls - Frequently made mistakes
Code Snippets
Environment Variables
Testing for provided features.
Notes on revisions
Extending ZYpp: Plugins and Hooks
Services
Solver - Vendor protection
Writing and tunning testcases
Libzypp and threads
Todo List
Deprecated List
Modules
Namespaces
Classes
Files
File List
zypp
base
media
misc
parser
pool
repo
sat
solver
target
thread
ui
url
ws
zypp_detail
APIConfig.h
Arch.cc
Arch.h
AutoDispose.h
Bit.h
ByteCount.cc
ByteCount.h
Callback.h
Capabilities.cc
Capabilities.h
Capability.cc
Capability.h
CapMatch.cc
CapMatch.h
Changelog.cc
Changelog.h
CheckSum.cc
CheckSum.h
CountryCode.cc
CountryCode.h
Date.cc
Date.h
Dep.cc
Dep.h
Digest.cc
Digest.h
DiskUsage.cc
DiskUsage.h
DiskUsageCounter.cc
DiskUsageCounter.h
DownloadMode.cc
DownloadMode.h
Edition.cc
Edition.h
ExternalProgram.cc
ExternalProgram.h
Fetcher.cc
Fetcher.h
FileChecker.cc
FileChecker.h
Filter.h
Glob.cc
Glob.h
HistoryLog.cc
HistoryLog.h
HistoryLogData.cc
HistoryLogData.h
IdString.cc
IdString.h
IdStringType.h
InstanceId.cc
InstanceId.h
KeyContext.h
KeyRing.cc
KeyRing.h
KVMap.h
LanguageCode.cc
LanguageCode.h
Locale.cc
Locale.h
Locks.cc
Locks.h
ManagedFile.h
MediaProducts.cc
MediaProducts.h
MediaSetAccess.cc
MediaSetAccess.h
Misc.h
OnMediaLocation.cc
OnMediaLocation.h
Package.cc
Package.h
PackageKeyword.h
Patch.cc
Patch.h
PathInfo.cc
PathInfo.h
Pathname.cc
Pathname.h
Pattern.cc
Pattern.h
PluginFrame.cc
PluginFrame.h
PluginFrameException.cc
PluginFrameException.h
PluginScript.cc
PluginScript.h
PluginScriptException.cc
PluginScriptException.h
PoolItem.cc
PoolItem.h
PoolItemBest.cc
PoolItemBest.h
PoolQuery.cc
PoolQuery.h
PoolQueryResult.cc
PoolQueryResult.h
PoolQueryUtil.tcc
ProblemSolution.cc
ProblemSolution.h
ProblemTypes.h
Product.cc
Product.h
ProgressData.cc
ProgressData.h
ProvideFilePolicy.cc
ProvideFilePolicy.h
PublicKey.cc
PublicKey.h
Range.cc
Range.h
Rel.cc
Rel.h
RelCompare.h
RepoInfo.cc
RepoInfo.h
RepoManager.cc
RepoManager.h
Repository.cc
Repository.h
RepoStatus.cc
RepoStatus.h
ResFilters.h
ResKind.cc
ResKind.h
ResObject.cc
ResObject.h
ResObjects.h
Resolvable.cc
Resolvable.h
Resolver.cc
Resolver.h
ResolverProblem.cc
ResolverProblem.h
ResPool.cc
ResPool.h
ResPoolProxy.cc
ResPoolProxy.h
ResStatus.cc
ResStatus.h
ResTraits.h
ServiceInfo.cc
ServiceInfo.h
Signature.cc
Signature.h
SrcPackage.cc
SrcPackage.h
SysContent.cc
SysContent.h
Target.cc
Target.h
TmpPath.cc
TmpPath.h
TriBool.h
Url.cc
Url.h
Vendor.h
VendorAttr.cc
VendorAttr.h
VendorSupportOptions.cc
VendorSupportOptions.h
ZConfig.cc
ZConfig.h
ZYpp.cc
ZYpp.h
ZYppCallbacks.h
ZYppCommit.h
ZYppCommitPolicy.cc
ZYppCommitPolicy.h
ZYppCommitResult.cc
ZYppCommitResult.h
ZYppFactory.cc
ZYppFactory.h
File Members
Callback.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_CALLBACK_H
13
#define ZYPP_CALLBACK_H
14
15
#include "
zypp/base/NonCopyable.h
"
16
18
namespace
zypp
19
{
20
22
namespace
HACK {
23
class
Callback
24
{
25
};
26
}
// namespace HACK
27
29
129
namespace
callback
130
{
131
133
struct
ReportBase
134
{
135
virtual
~ReportBase
()
136
{}
137
};
138
140
template
<
class
_Report>
141
class
DistributeReport;
142
144
template
<
class
_Report>
145
struct
ReceiveReport
:
public
_Report
146
{
147
typedef
_Report
ReportType
;
148
typedef
ReceiveReport<_Report>
Receiver
;
149
typedef
DistributeReport<_Report>
Distributor
;
150
151
virtual
~ReceiveReport
()
152
{
disconnect
(); }
153
154
ReceiveReport
*
whoIsConnected
()
const
155
{
return
Distributor::instance
().
getReceiver
(); }
156
157
bool
connected
()
const
158
{
return
whoIsConnected
() ==
this
; }
159
160
void
connect
()
161
{
Distributor::instance
().
setReceiver
( *
this
); }
162
163
void
disconnect
()
164
{
Distributor::instance
().
unsetReceiver
( *
this
); }
165
166
virtual
void
reportbegin
()
167
{}
168
virtual
void
reportend
()
169
{}
170
};
171
173
template
<
class
_Report>
174
struct
DistributeReport
175
{
176
public
:
177
typedef
_Report
ReportType
;
178
typedef
ReceiveReport<_Report>
Receiver
;
179
typedef
DistributeReport<_Report>
Distributor
;
180
181
static
DistributeReport
&
instance
()
182
{
183
static
DistributeReport
_self;
184
return
_self;
185
}
186
187
Receiver
*
getReceiver
()
const
188
{
return
_receiver
== &
_noReceiver
? 0 :
_receiver
; }
189
190
void
setReceiver
(
Receiver
& rec_r )
191
{
_receiver
= &rec_r; }
192
193
void
unsetReceiver
(
Receiver
& rec_r )
194
{
if
(
_receiver
== &rec_r )
noReceiver
(); }
195
196
void
noReceiver
()
197
{
_receiver
= &
_noReceiver
; }
198
199
public
:
200
Receiver
*
operator->
()
201
{
return
_receiver
; }
202
203
private
:
204
DistributeReport
()
205
:
_receiver
( &
_noReceiver
)
206
{}
207
Receiver
_noReceiver
;
208
Receiver
*
_receiver
;
209
};
210
212
template
<
class
_Report>
213
struct
SendReport
:
private
zypp::base::NonCopyable
214
{
215
typedef
_Report
ReportType
;
216
typedef
ReceiveReport<_Report>
Receiver
;
217
typedef
DistributeReport<_Report>
Distributor
;
218
219
SendReport
()
220
{
Distributor::instance
()->reportbegin(); }
221
222
~SendReport
()
223
{
Distributor::instance
()->reportend(); }
224
225
Distributor
&
operator->
()
226
{
return
Distributor::instance
(); }
227
};
228
254
template
<
class
_Report>
255
struct
TempConnect
256
{
257
typedef
_Report
ReportType
;
258
typedef
ReceiveReport<_Report>
Receiver
;
259
typedef
DistributeReport<_Report>
Distributor
;
260
261
TempConnect
()
262
:
_oldRec
(
Distributor
::instance().getReceiver() )
263
{
264
Distributor::instance
().
noReceiver
();
265
}
266
267
TempConnect
(
Receiver
& rec_r )
268
:
_oldRec
(
Distributor
::instance().getReceiver() )
269
{
270
rec_r.connect();
271
}
272
273
~TempConnect
()
274
{
275
if
(
_oldRec
)
276
Distributor::instance
().
setReceiver
( *
_oldRec
);
277
else
278
Distributor::instance
().
noReceiver
();
279
}
280
private
:
281
Receiver
*
_oldRec
;
282
};
283
285
}
// namespace callback
288
}
// namespace zypp
290
#endif // ZYPP_CALLBACK_H
zypp
Callback.h
Generated by
1.8.1