public static void main(String[] args) { String groupName = "TestGroup"; MulticastStrategy tree = new TreeBaseMulticast(); Orderer causal = new CausalOrderer(); try { ComMember mbr1 = new ComMember(tree, "mbr1"); ComObserver m = new MemberImpl(causal, mbr1); mbr1.addObserver(m); mbr1.addObserver(new groupRegisteringTest()); Registry dictionary = LocateRegistry.getRegistry(NamingService.SERVER_PORT); NamingServiceRemote server = (NamingServiceRemote) dictionary.lookup(NamingService.SERVICE_NAME); LinkedList<String> groups = server.getGroups(); if (!(groups.isEmpty())) { System.out.println("Available groups : "); for (String grp : groups) System.out.println("\t- " + grp); } RemoteMember leader = server.joinGroup("TestGroup", mbr1); System.out.println(leader.toString()); leader.deliver(new ComMessage<String>(new String("Hej Hej!"))); // mbr.post( new CommMessage<String>( new String("Hej Hej!") ), server.getSharedObjects() ) ; } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } }
/** * Strategy to multicast a message * * @param msg Message to send * @param group Group to send the message * @throws UnreachableRemoteObjectException */ @Override public void send(ComMessage msg, Collection<RemoteMember> group) throws UnreachableRemoteObjectException { updatePath(msg); // update the view, i.e. the group view = new ArrayList<RemoteMember>(group); // the message is send from here msg.setSource(owner); boolean expt_activated = false; // for each member of the group for (RemoteMember member : view) { try { // send the message member.deliver(msg); } catch (RemoteException e) { unreachableMembers.add(member); expt_activated = true; } } if (expt_activated) throw new UnreachableRemoteObjectException(); }
/** * Notify observer when new member want to join a group * * @param member New member joining to the group * @param groupID Group name to join */ @Override public void notifyNewMember(RemoteMember member, String groupID) { System.out.println(member.toString() + " asked to join group " + groupID); }