Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: icu46/source/common/servnotf.h

Issue 5516007: Check in the pristine copy of ICU 4.6... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « icu46/source/common/servls.cpp ('k') | icu46/source/common/servnotf.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 /**
2 *******************************************************************************
3 * Copyright (C) 2001-2004, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
6 */
7 #ifndef ICUNOTIF_H
8 #define ICUNOTIF_H
9
10 #include "unicode/utypes.h"
11
12 #if UCONFIG_NO_SERVICE
13
14 U_NAMESPACE_BEGIN
15
16 /*
17 * Allow the declaration of APIs with pointers to BreakIterator
18 * even when break iteration is removed from the build.
19 */
20 class ICUNotifier;
21
22 U_NAMESPACE_END
23
24 #else
25
26 #include "unicode/uobject.h"
27 #include "unicode/unistr.h"
28
29 #include "mutex.h"
30 #include "uvector.h"
31
32 U_NAMESPACE_BEGIN
33
34 class U_COMMON_API EventListener : public UObject {
35 public:
36 virtual ~EventListener();
37
38 public:
39 static UClassID U_EXPORT2 getStaticClassID();
40
41 virtual UClassID getDynamicClassID() const;
42
43 public:
44 #ifdef SERVICE_DEBUG
45 virtual UnicodeString& debug(UnicodeString& result) const {
46 return debugClass(result);
47 }
48
49 virtual UnicodeString& debugClass(UnicodeString& result) const {
50 return result.append("Key");
51 }
52 #endif
53 };
54
55 /**
56 * <p>Abstract implementation of a notification facility. Clients add
57 * EventListeners with addListener and remove them with removeListener.
58 * Notifiers call notifyChanged when they wish to notify listeners.
59 * This queues the listener list on the notification thread, which
60 * eventually dequeues the list and calls notifyListener on each
61 * listener in the list.</p>
62 *
63 * <p>Subclasses override acceptsListener and notifyListener
64 * to add type-safe notification. AcceptsListener should return
65 * true if the listener is of the appropriate type; ICUNotifier
66 * itself will ensure the listener is non-null and that the
67 * identical listener is not already registered with the Notifier.
68 * NotifyListener should cast the listener to the appropriate
69 * type and call the appropriate method on the listener.
70 */
71
72 class U_COMMON_API ICUNotifier : public UMemory {
73 private: UMTX notifyLock;
74 private: UVector* listeners;
75
76 public:
77 ICUNotifier(void);
78
79 virtual ~ICUNotifier(void);
80
81 /**
82 * Add a listener to be notified when notifyChanged is called.
83 * The listener must not be null. AcceptsListener must return
84 * true for the listener. Attempts to concurrently
85 * register the identical listener more than once will be
86 * silently ignored.
87 */
88 virtual void addListener(const EventListener* l, UErrorCode& status);
89
90 /**
91 * Stop notifying this listener. The listener must
92 * not be null. Attemps to remove a listener that is
93 * not registered will be silently ignored.
94 */
95 virtual void removeListener(const EventListener* l, UErrorCode& status);
96
97 /**
98 * ICU doesn't spawn its own threads. All listeners are notified in
99 * the thread of the caller. Misbehaved listeners can therefore
100 * indefinitely block the calling thread. Callers should beware of
101 * deadlock situations.
102 */
103 virtual void notifyChanged(void);
104
105 protected:
106 /**
107 * Subclasses implement this to return TRUE if the listener is
108 * of the appropriate type.
109 */
110 virtual UBool acceptsListener(const EventListener& l) const = 0;
111
112 /**
113 * Subclasses implement this to notify the listener.
114 */
115 virtual void notifyListener(EventListener& l) const = 0;
116 };
117
118 U_NAMESPACE_END
119
120 /* UCONFIG_NO_SERVICE */
121 #endif
122
123 /* ICUNOTIF_H */
124 #endif
OLDNEW
« no previous file with comments | « icu46/source/common/servls.cpp ('k') | icu46/source/common/servnotf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698