Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 29 30 package echo2example.chatserver; 31 32 35 public class MessageStore { 36 37 private static final int MAX_MESSAGES = 1000; 38 private static final int RECENT_MESSAGES = 15; 39 40 private long[] messageIds = new long[MAX_MESSAGES]; 41 private Message[] messages = new Message[MAX_MESSAGES]; 42 private int firstMessageIndex = 0; 43 private int messageCount = 0; 44 45 48 public MessageStore() { 49 super(); 50 } 51 52 58 private Message getMessage(int index) { 59 return messages[(firstMessageIndex + index) % MAX_MESSAGES]; 60 } 61 62 68 public Message[] getMessages(long lastRetrievedId) { 69 int startIndex = 0; 70 while (startIndex < messageCount) { 71 Message message = getMessage(startIndex); 72 if (message.getId() > lastRetrievedId) { 73 break; 74 } 75 ++startIndex; 76 } 77 Message[] matchingMessages = new Message[messageCount - startIndex]; 78 for (int i = startIndex; i < messageCount; ++i) { 79 matchingMessages[i - startIndex] = getMessage(i); 80 } 81 return matchingMessages; 82 } 83 84 91 public Message[] getRecentMessages() { 92 Message[] matchingMessages = new Message[messageCount < RECENT_MESSAGES ? messageCount : RECENT_MESSAGES]; 93 for (int i = 0; i < matchingMessages.length; ++i) { 94 matchingMessages[i] = getMessage(messageCount - matchingMessages.length + i); 95 } 96 return matchingMessages; 97 } 98 99 105 public synchronized void post(String userName, String messageContent) { 106 int messageIndex = (firstMessageIndex + messageCount) % MAX_MESSAGES; 107 108 Message message = new Message(userName, messageContent); 109 messages[messageIndex] = message; 110 messageIds[messageIndex] = message.getId(); 111 112 if (messageCount < MAX_MESSAGES) { 113 ++messageCount; 114 } else { 115 firstMessageIndex = (firstMessageIndex + 1) % MAX_MESSAGES; 116 } 117 } 118 } 119
| Popular Tags
|