Medical Imaging Interaction Toolkit  2021.02.99-121d8b57
Medical Imaging Interaction Toolkit
usServiceListenerHook.h
Go to the documentation of this file.
1 /*============================================================================
2 
3  Library: CppMicroServices
4 
5  Copyright (c) German Cancer Research Center (DKFZ)
6  All rights reserved.
7 
8  Licensed under the Apache License, Version 2.0 (the "License");
9  you may not use this file except in compliance with the License.
10  You may obtain a copy of the License at
11 
12  http://www.apache.org/licenses/LICENSE-2.0
13 
14  Unless required by applicable law or agreed to in writing, software
15  distributed under the License is distributed on an "AS IS" BASIS,
16  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  See the License for the specific language governing permissions and
18  limitations under the License.
19 
20 ============================================================================*/
21 
22 #ifndef USSERVICELISTENERHOOK_H
23 #define USSERVICELISTENERHOOK_H
24 
25 #include "usServiceInterface.h"
26 #include "usShrinkableVector.h"
27 #include "usSharedData.h"
28 
29 #include <string>
30 
32 
33 class ModuleContext;
34 class ServiceListenerEntry;
35 
47 struct US_Core_EXPORT ServiceListenerHook
48 {
49 
50  class ListenerInfoData;
51 
58  struct US_Core_EXPORT ListenerInfo
59  {
60  ListenerInfo();
61 
62  ListenerInfo(const ListenerInfo& other);
63 
64  ~ListenerInfo();
65 
66  ListenerInfo& operator=(const ListenerInfo& other);
67 
75  bool IsNull() const;
76 
83 
90  std::string GetFilter() const;
91 
111  bool IsRemoved() const;
112 
125  bool operator==(const ListenerInfo& other) const;
126 
127  private:
128 
129  friend class ServiceListenerEntry;
130 
131  US_HASH_FUNCTION_FRIEND(ServiceListenerHook::ListenerInfo);
132 
133  ListenerInfo(ListenerInfoData* data);
134 
135  ExplicitlySharedDataPointer<ListenerInfoData> d;
136  };
137 
138  virtual ~ServiceListenerHook();
139 
151  virtual void Added(const std::vector<ListenerInfo>& listeners) = 0;
152 
162  virtual void Removed(const std::vector<ListenerInfo>& listeners) = 0;
163 
164 };
165 
167 
169 US_HASH_FUNCTION_BEGIN(US_PREPEND_NAMESPACE(ServiceListenerHook::ListenerInfo))
170  return US_HASH_FUNCTION(const US_PREPEND_NAMESPACE(ServiceListenerHook::ListenerInfoData)*, arg.d.Data());
173 
174 #endif // USSERVICELISTENERHOOK_H
MITKCORE_EXPORT bool operator==(const InteractionEvent &a, const InteractionEvent &b)
#define US_HASH_FUNCTION_NAMESPACE_BEGIN
#define US_HASH_FUNCTION_BEGIN(type)
#define US_Core_EXPORT
Definition: usCoreExport.h:21
#define US_HASH_FUNCTION_NAMESPACE_END
#define US_HASH_FUNCTION_END
#define US_END_NAMESPACE
#define US_HASH_FUNCTION_FRIEND(type)
#define US_BEGIN_NAMESPACE
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
US_MSVC_POP_WARNING US_HASH_FUNCTION_NAMESPACE_BEGIN return US_HASH_FUNCTION(us::ServiceRegistrationBasePrivate *, arg.d)
#define US_PREPEND_NAMESPACE(name)