+ break;
+ case "Login":
+ if (type.equals(MessageLogin.getType())) {
+ MessageLogin ml = (MessageLogin)nm.getMessage();
+
+ Set<Map.Entry<Long, WSYD_Member>> tempSet = _members.entrySet();
+ Iterator<Map.Entry<Long, WSYD_Member>> tempIter = tempSet.iterator();
+ while (tempIter.hasNext()) {
+ Map.Entry<Long, WSYD_Member> element = tempIter.next();
+ if (element.getValue()._userName.equals(ml._uName) && element.getValue()._password.equals(ml._uPass)) {
+ ml._userID = element.getKey();
+ ml._loggedIn = true;
+ _tcpStreamManager.updateKey(nm.getKey(), element.getKey()); // replace temp key in stream manager
+ _membersOnline.add(element.getKey()); // make the member online
+ }
+ }
+ _tcpStreamManager._tcpStreams.get(nm.getKey()).write(nm);
+ }
+ }
+
+ }
+
+ private void notifyMemberPrescence(long userID, boolean state) {
+ NetworkMessage message = new NetworkMessage("MemberNotification", null, new MessageMemberState(userID, state));
+ for (long ID : _membersOnline) {
+ _tcpStreamManager._tcpStreams.get(ID).write(message);
+ }
+ }
+
+ private void memberOnline (long userID) {
+ if (!_membersOnline.contains(userID)) {
+ notifyMemberPrescence(userID, true);
+ _membersOnline.add(userID);
+ }
+ }
+
+ private void memberOffline (long userID) {
+ if (_membersOnline.contains(userID)) {
+ _membersOnline.remove(userID);
+ notifyMemberPrescence(userID, false);