import java.util.ArrayList; import java.util.List; import java.util.Map; abstract class ChatRoomSkel extends ChatRoom implements ObjectImpl { private String key; public ChatRoomSkel() { Address addr = ORB.instance().address(); ObjectReference ior = new ObjectReference ("IDL:Account:1.0", addr); objectReference (ior); key = ior.stringify(); ORB.instance().registerObjectImpl(ior.stringify(),this); } public ChatRoomSkel(String key) { Address addr = ORB.instance().address(); ObjectReference ior = new ObjectReference ("IDL:Account:1.0", addr); this.key = key; ior.updateIor(key); objectReference(ior); ORB.instance().registerObjectImpl(key,this); } public void invoke(ServerRequest req) { boolean a = dispatch(req); assert (a):"dispatch Error"; } protected boolean dispatch(ServerRequest req) { /** * TODO: implementar as operacoes */ if (req.opname().equals("getName")) { String name = this.getName(); req.putStringReply(name); return true; }else if (req.opname().equals("getUsers")) { Map users = getUsers(); req.putSequenceReferenceReply(users); return true; }else if (req.opname().equals("join")) { String name = req.getString(); String ior = req.getObjectReferenceFromSequence(); String object_host = req.getObjectHost(); String object_port = req.getObjectPort(); //Criar o stub para o ChatUser echo("obtendo o stub para o ChatUser ("+ior+") -> "+name); ChatUser chatuser = null; ObjectReference chatuser_ref = new ObjectReference (ior, object_host, object_port); chatuser = new ChatUserStub(chatuser_ref); boolean result = join(name, chatuser); req.putBooleanReply(result); return result; }else if (req.opname().equals("leave")) { String name = req.getString(); boolean result = leave(name); req.putBooleanReply(result); return result; }else if (req.opname().equals("send")) { List sequence = req.getSequenceString(); String name = (String) sequence.get(0); String message = (String) sequence.get(1); req.putStringReply("send to "+name+" -> "+message); send(name, message); return true; } return false; } public String getKey(){ return key; } }