MessageStatusChangeEventCache
Added a cache storing all messageStatusChangeEvents received during handshake just like the already existing cache for received messages during the handshake This new cache is needed because the functionality regarding the pending messages (and now messageStatusChanges as well) has changed!
This commit is contained in:
@@ -60,13 +60,15 @@ public class Client implements Closeable {
|
||||
* @param receivedMessageCache a message cache containing all unread messages
|
||||
* from the server that can be relayed after
|
||||
* initialization
|
||||
* @param receivedMessageStatusChangeEventCache an event cache containing all received messageStatusChangeEvents from the server that can be relayed after initialization
|
||||
* @throws TimeoutException if the server could not be reached
|
||||
* @throws IOException if the login credentials could not be
|
||||
* written
|
||||
* @throws InterruptedException if the current thread is interrupted while
|
||||
* waiting for the handshake response
|
||||
*/
|
||||
public void performHandshake(LoginCredentials credentials, Cache<Message> receivedMessageCache)
|
||||
public void performHandshake(LoginCredentials credentials, Cache<Message> receivedMessageCache,
|
||||
Cache<MessageStatusChangeEvent> receivedMessageStatusChangeEventCache)
|
||||
throws TimeoutException, IOException, InterruptedException {
|
||||
if (online) throw new IllegalStateException("Handshake has already been performed successfully");
|
||||
// Establish TCP connection
|
||||
@@ -80,6 +82,7 @@ public class Client implements Closeable {
|
||||
// Register user creation processor, contact list processor and message cache
|
||||
receiver.registerProcessor(User.class, sender -> { this.sender = sender; contacts = sender.getContacts(); });
|
||||
receiver.registerProcessor(Message.class, receivedMessageCache);
|
||||
receiver.registerProcessor(MessageStatusChangeEvent.class, receivedMessageStatusChangeEventCache);
|
||||
receiver.registerProcessor(HandshakeRejectionEvent.class, evt -> { rejected = true; eventBus.dispatch(evt); });
|
||||
|
||||
rejected = false;
|
||||
@@ -123,22 +126,27 @@ public class Client implements Closeable {
|
||||
* @param receivedMessageCache a message cache containing all unread messages
|
||||
* from the server that can be relayed after
|
||||
* initialization
|
||||
* @param receivedMessageStatusChangeEventCache an event cache containing all received messageStatusChangeEvents from the server that can be relayed after initialization
|
||||
* @throws IOException if no {@link IDGenerator} is present and none could be
|
||||
* requested from the server
|
||||
* @since Envoy Client v0.2-alpha
|
||||
*/
|
||||
public void initReceiver(LocalDB localDB, Cache<Message> receivedMessageCache) throws IOException {
|
||||
public void initReceiver(LocalDB localDB, Cache<Message> receivedMessageCache,
|
||||
Cache<MessageStatusChangeEvent> receivedMessageStatusChangeEventCache) throws IOException {
|
||||
checkOnline();
|
||||
|
||||
// Process incoming messages
|
||||
final ReceivedMessageProcessor receivedMessageProcessor = new ReceivedMessageProcessor();
|
||||
final MessageStatusChangeEventProcessor messageStatusChangeEventProcessor = new MessageStatusChangeEventProcessor();
|
||||
|
||||
receiver.registerProcessor(Message.class, receivedMessageProcessor);
|
||||
|
||||
// Relay cached unread messages
|
||||
receivedMessageCache.setProcessor(receivedMessageProcessor);
|
||||
|
||||
// Process message status changes
|
||||
receiver.registerProcessor(MessageStatusChangeEvent.class, new MessageStatusChangeEventProcessor());
|
||||
receiver.registerProcessor(MessageStatusChangeEvent.class, messageStatusChangeEventProcessor);
|
||||
receivedMessageStatusChangeEventCache.setProcessor(messageStatusChangeEventProcessor);
|
||||
|
||||
// Process user status changes
|
||||
receiver.registerProcessor(UserStatusChangeEvent.class, eventBus::dispatch);
|
||||
|
Reference in New Issue
Block a user