1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
package org.bukkit.plugin.messaging;
import java.util.Set;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
/**
* A class responsible for managing the registrations of plugin channels and their
* listeners.
*/
public interface Messenger {
/**
* Represents the largest size that an individual Plugin Message may be.
*/
public static final int MAX_MESSAGE_SIZE = 32766;
/**
* Represents the largest size that a Plugin Channel may be.
*/
public static final int MAX_CHANNEL_SIZE = 16;
/**
* Checks if the specified channel is a reserved name.
*
* @param channel Channel name to check.
* @return True if the channel is reserved, otherwise false.
* @throws IllegalArgumentException Thrown if channel is null.
*/
public boolean isReservedChannel(String channel);
/**
* Registers the specific plugin to the requested outgoing plugin channel, allowing it
* to send messages through that channel to any clients.
*
* @param plugin Plugin that wishes to send messages through the channel.
* @param channel Channel to register.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void registerOutgoingPluginChannel(Plugin plugin, String channel);
/**
* Unregisters the specific plugin from the requested outgoing plugin channel, no longer
* allowing it to send messages through that channel to any clients.
*
* @param plugin Plugin that no longer wishes to send messages through the channel.
* @param channel Channel to unregister.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void unregisterOutgoingPluginChannel(Plugin plugin, String channel);
/**
* Unregisters the specific plugin from all outgoing plugin channels, no longer allowing
* it to send any plugin messages.
*
* @param plugin Plugin that no longer wishes to send plugin messages.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public void unregisterOutgoingPluginChannel(Plugin plugin);
/**
* Registers the specific plugin for listening on the requested incoming plugin channel,
* allowing it to act upon any plugin messages.
*
* @param plugin Plugin that wishes to register to this channel.
* @param channel Channel to register.
* @param listener Listener to receive messages on.
* @returns The resulting registration that was made as a result of this method.
* @throws IllegalArgumentException Thrown if plugin, channel or listener is null, or the listener is already registered for this channel.
*/
public PluginMessageListenerRegistration registerIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener);
/**
* Unregisters the specific plugin's listener from listening on the requested incoming plugin channel,
* no longer allowing it to act upon any plugin messages.
*
* @param plugin Plugin that wishes to unregister from this channel.
* @param channel Channel to unregister.
* @param listener Listener to stop receiving messages on.
* @throws IllegalArgumentException Thrown if plugin, channel or listener is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin, String channel, PluginMessageListener listener);
/**
* Unregisters the specific plugin from listening on the requested incoming plugin channel,
* no longer allowing it to act upon any plugin messages.
*
* @param plugin Plugin that wishes to unregister from this channel.
* @param channel Channel to unregister.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin, String channel);
/**
* Unregisters the specific plugin from listening on all plugin channels through all listeners.
*
* @param plugin Plugin that wishes to unregister from this channel.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public void unregisterIncomingPluginChannel(Plugin plugin);
/**
* Gets a set containing all the outgoing plugin channels.
*
* @return List of all registered outgoing plugin channels.
*/
public Set<String> getOutgoingChannels();
/**
* Gets a set containing all the outgoing plugin channels that the specified plugin is registered to.
*
* @param plugin Plugin to retrieve channels for.
* @return List of all registered outgoing plugin channels that a plugin is registered to.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<String> getOutgoingChannels(Plugin plugin);
/**
* Gets a set containing all the incoming plugin channels.
*
* @return List of all registered incoming plugin channels.
*/
public Set<String> getIncomingChannels();
/**
* Gets a set containing all the incoming plugin channels that the specified plugin is registered for.
*
* @param plugin Plugin to retrieve channels for.
* @return List of all registered incoming plugin channels that the plugin is registered for.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<String> getIncomingChannels(Plugin plugin);
/**
* Gets a set containing all the incoming plugin channel registrations that the specified plugin has.
*
* @param plugin Plugin to retrieve registrations for.
* @return List of all registrations that the plugin has.
* @throws IllegalArgumentException Thrown if plugin is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin);
/**
* Gets a set containing all the incoming plugin channel registrations that are on the requested channel.
*
* @param channel Channel to retrieve registrations for.
* @return List of all registrations that are on the channel.
* @throws IllegalArgumentException Thrown if channel is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(String channel);
/**
* Gets a set containing all the incoming plugin channel registrations that the specified plugin has
* on the requested channel.
*
* @param plugin Plugin to retrieve registrations for.
* @param channel Channel to filter registrations by.
* @return List of all registrations that the plugin has.
* @throws IllegalArgumentException Thrown if plugin or channel is null.
*/
public Set<PluginMessageListenerRegistration> getIncomingChannelRegistrations(Plugin plugin, String channel);
/**
* Checks if the specified plugin message listener registration is valid.
* <p>
* A registration is considered valid if it has not be unregistered and that the plugin
* is still enabled.
*
* @param registration Registration to check.
* @return True if the registration is valid, otherwise false.
*/
public boolean isRegistrationValid(PluginMessageListenerRegistration registration);
/**
* Checks if the specified plugin has registered to receive incoming messages through the requested
* channel.
*
* @param plugin Plugin to check registration for.
* @param channel Channel to test for.
* @return True if the channel is registered, else false.
*/
public boolean isIncomingChannelRegistered(Plugin plugin, String channel);
/**
* Checks if the specified plugin has registered to send outgoing messages through the requested
* channel.
*
* @param plugin Plugin to check registration for.
* @param channel Channel to test for.
* @return True if the channel is registered, else false.
*/
public boolean isOutgoingChannelRegistered(Plugin plugin, String channel);
/**
* Dispatches the specified incoming message to any registered listeners.
*
* @param source Source of the message.
* @param channel Channel that the message was sent by.
* @param message Raw payload of the message.
*/
public void dispatchIncomingMessage(Player source, String channel, byte[] message);
}
|