📄 distributedstate.java
字号:
/* * Copyright (c) 2000 Lyrisoft Solutions, Inc. * Used by permission */package com.lyrisoft.chat.server.remote;import java.util.Collection;import java.util.Iterator;import java.io.PrintStream;/** * Encapulates the state of the whole distributed system. * Each server will have its own distributed state object */public class DistributedState { private RoomTable _roomTable; private ServerTable _serverTable; private ChatServer _server; public DistributedState(ChatServer server) { _server = server; _serverTable = new ServerTable(server); _roomTable = new RoomTable(server); } public synchronized Collection getUsersOnServer(String server) { return _serverTable.getUsers(server); } public synchronized Collection getAllUsers() { return _serverTable.getAllUsers(); } public synchronized Collection getAllRooms() { return _roomTable.getRoomNames(); } public synchronized Collection getUsersInRoom(String roomname) { return _roomTable.getUsers(roomname); } public synchronized Collection getAllServers() { return _serverTable.getServerNames(); } public synchronized void signon(String server, String user) { _serverTable.signon(server, user); } /** * @return a Collection of rooms that have been destroyed as a result of the signoff */ public synchronized Collection signoff(String server, String user) { _serverTable.signoff(server, user); return _roomTable.signoff(user); } public synchronized boolean userExists(String username) { return _serverTable.userExists(username); } public synchronized boolean userExistsInRoom(String username, String roomname) { return _roomTable.userExistsInRoom(username, roomname); } public synchronized boolean serverExists(String servername) { return _serverTable.serverExists(servername); } public synchronized boolean roomExists(String roomname) { return _roomTable.roomExists(roomname); } public synchronized void checkServerPings(long timeout) { _serverTable.checkServerPings(timeout); } /** * @return true if this room is newly created */ public synchronized boolean join(String server, String room, String user) { return _roomTable.join(room, user); } /** * @return true if the room is destroyed */ public synchronized boolean part(String server, String room, String user) { return _roomTable.part(room, user); } public synchronized void addServer(String server) { _serverTable.add(server); } public synchronized void deleteServer(String server) { // first get rid of any dead users (and possibly dead rooms) Collection deadUsers = _serverTable.getUsers(server); for (Iterator i = deadUsers.iterator(); i.hasNext(); ) { String user = (String)i.next(); _server.remoteSignOff(server, user); } _serverTable.delete(server); } public synchronized int countUsersOnServer(String server) { return _serverTable.countUsers(server); } public synchronized int countUsersInRoom(String room) { return _roomTable.countUsers(room); } public synchronized void setLastBroadcastPing(String server, long time) { _serverTable.setLastBroadcastPing(server, time); } public void dumpServerTable(PrintStream out) { _serverTable.dump(out); } public void dumpRoomTable(PrintStream out) { _roomTable.dump(out); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -