ac8b935f33d0b07f9e842fd45c27912bee48b502
[platform/upstream/libzypp-bindings.git] / swig / CommitCallbacks.h
1 class CommitCallbacks {
2
3   private:
4     PatchMessageReportReceiver _messageReceiver;
5     PatchScriptReportReceiver _scriptReceiver;
6     RemoveResolvableReportReceiver _installReceiver;
7     InstallResolvableReportReceiver _removeReceiver;
8     Target_Type _instance;
9
10   public:
11     CommitCallbacks()
12      : _instance(Target_Null)
13     {
14       _messageReceiver.connect();
15       _scriptReceiver.connect();
16       _installReceiver.connect();
17       _removeReceiver.connect();
18     }
19
20     ~CommitCallbacks()
21     {
22       _removeReceiver.disconnect();
23       _installReceiver.disconnect();
24       _scriptReceiver.disconnect();
25       _messageReceiver.disconnect();
26       disconnect();
27     }
28    /*
29     * Connect callback to receiver instance
30     * Pass NULL receiver to disconnect
31     * 
32     */
33     void connect(Target_Type instance) {
34       disconnect();
35       if (instance) {
36         _instance = instance;
37         Target_INCREF(_instance);
38         _messageReceiver.instance = _instance;
39         _scriptReceiver.instance = _instance;
40         _installReceiver.instance = _instance;
41         _removeReceiver.instance = _instance;
42       }
43     }
44     /*
45      * Disconnect receiver instance
46      * 
47      */
48     void disconnect() {
49       if (_instance != Target_Null) {
50         _messageReceiver.instance = Target_Null;
51         _scriptReceiver.instance = Target_Null;
52         _installReceiver.instance = Target_Null;
53         _removeReceiver.instance = Target_Null;
54         Target_DECREF(_instance);
55         _instance = Target_Null;
56       }
57     }
58     /*
59      * Get current receiver instance
60      * 
61      */
62     Target_Type receiver() {
63       return _instance;
64     }
65 };