Acquiring user list through the sender object
This commit is contained in:
parent
1fec53f35a
commit
fde3ae2859
@ -3,6 +3,7 @@ package envoy.client;
|
|||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@ -56,13 +57,13 @@ public class Client implements Closeable {
|
|||||||
// Register user creation processor
|
// Register user creation processor
|
||||||
receiver.registerProcessor(User.class, sender -> { logger.info("Acquired user object " + sender); this.sender = sender; });
|
receiver.registerProcessor(User.class, sender -> { logger.info("Acquired user object " + sender); this.sender = sender; });
|
||||||
|
|
||||||
|
// Start receiver
|
||||||
|
new Thread(receiver).start();
|
||||||
|
|
||||||
// Write login credentials
|
// Write login credentials
|
||||||
logger.finest("Sending login credentials...");
|
logger.finest("Sending login credentials...");
|
||||||
SerializationUtils.writeBytesWithLength(credentials, socket.getOutputStream());
|
SerializationUtils.writeBytesWithLength(credentials, socket.getOutputStream());
|
||||||
|
|
||||||
// Start receiver
|
|
||||||
new Thread(receiver).start();
|
|
||||||
|
|
||||||
// Wait for a maximum of five seconds to acquire the sender object
|
// Wait for a maximum of five seconds to acquire the sender object
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
while (sender == null) {
|
while (sender == null) {
|
||||||
@ -81,7 +82,7 @@ public class Client implements Closeable {
|
|||||||
* @since Envoy v0.3-alpha
|
* @since Envoy v0.3-alpha
|
||||||
*/
|
*/
|
||||||
public void sendMessage(Message message) throws IOException {
|
public void sendMessage(Message message) throws IOException {
|
||||||
if (!online) throw new IllegalStateException("Client is not online");
|
checkOnline();
|
||||||
SerializationUtils.writeBytesWithLength(message, socket.getOutputStream());
|
SerializationUtils.writeBytesWithLength(message, socket.getOutputStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,13 +92,17 @@ public class Client implements Closeable {
|
|||||||
* @since Envoy v0.2-alpha
|
* @since Envoy v0.2-alpha
|
||||||
*/
|
*/
|
||||||
public Map<String, User> getUsers() {
|
public Map<String, User> getUsers() {
|
||||||
// TODO
|
checkOnline();
|
||||||
return null;
|
Map<String, User> users = new HashMap<>();
|
||||||
|
sender.getContacts().forEach(u -> users.put(u.getName(), u));
|
||||||
|
return users;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException { if (online) socket.close(); }
|
public void close() throws IOException { if (online) socket.close(); }
|
||||||
|
|
||||||
|
private void checkOnline() { if (!online) throw new IllegalStateException("Client is not online"); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the sender object that represents this client.
|
* @return the sender object that represents this client.
|
||||||
* @since Envoy v0.1-alpha
|
* @since Envoy v0.1-alpha
|
||||||
|
@ -3,9 +3,7 @@ package envoy.client;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.logging.Logger;
|
|
||||||
|
|
||||||
import envoy.client.util.EnvoyLog;
|
|
||||||
import envoy.data.User;
|
import envoy.data.User;
|
||||||
import envoy.util.SerializationUtils;
|
import envoy.util.SerializationUtils;
|
||||||
|
|
||||||
@ -25,8 +23,6 @@ public class LocalDB {
|
|||||||
private Map<String, User> users = new HashMap<>();
|
private Map<String, User> users = new HashMap<>();
|
||||||
private List<Chat> chats = new ArrayList<>();
|
private List<Chat> chats = new ArrayList<>();
|
||||||
|
|
||||||
private static final Logger logger = EnvoyLog.getLogger(LocalDB.class.getSimpleName());
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs an empty local database. To serialize any chats to the file
|
* Constructs an empty local database. To serialize any chats to the file
|
||||||
* system, call {@link LocalDB#initializeDBFile()}.
|
* system, call {@link LocalDB#initializeDBFile()}.
|
||||||
|
Reference in New Issue
Block a user