1 55 package org.lateralnz.messaging.broadcast; 56 57 import java.util.Map ; 58 import java.util.HashMap ; 59 import java.util.ResourceBundle ; 60 61 import org.apache.log4j.Logger; 62 63 import org.lateralnz.common.util.ResourceUtils; 64 import org.lateralnz.common.util.StringUtils; 65 import org.lateralnz.messaging.Message; 66 import org.lateralnz.messaging.MessageHandler; 67 import org.lateralnz.messaging.MessageListener; 68 69 73 public class BroadcastMessageHandlerFactory { 74 private static final Logger log = Logger.getLogger(BroadcastMessageHandlerFactory.class.getName()); 75 private static BroadcastMessageHandlerFactory obj = new BroadcastMessageHandlerFactory(); 76 private static ResourceBundle resources = ResourceUtils.getStaticBundle(BroadcastMessageHandlerFactory.class); 77 78 private String defaultAddress = null; 79 private int defaultPort = 5555; 80 81 private Map handlers = new HashMap (); 82 83 private BroadcastMessageHandlerFactory() { 84 } 85 86 public static final BroadcastMessageHandlerFactory getInstance() { 87 return obj; 88 } 89 90 93 public MessageHandler getHandler(String ipaddress, int port) throws Exception { 94 String key = ipaddress + port; 95 if (!handlers.containsKey(key)) { 96 synchronized (handlers) { 97 if (!handlers.containsKey(key)) { 98 handlers.put(key, new BroadcastMessageHandler(ipaddress, port)); 99 } 100 } 101 } 102 return (MessageHandler)handlers.get(key); 103 } 104 105 108 public MessageHandler getDefaultHandler() throws Exception { 109 if (StringUtils.isEmpty(defaultAddress)) { 110 defaultAddress = resources.getString("default_address"); 111 defaultPort = Integer.parseInt(resources.getString("default_port")); 112 } 113 return getHandler(defaultAddress, defaultPort); 114 } 115 116 117 public static final void main(String [] args ) { 119 try { 120 MessageHandler nh = BroadcastMessageHandlerFactory.getInstance().getHandler("192.168.242.255", 5555); 121 122 MessageListener nl1 = new MessageListener() { 123 public void handle(Message event) { 124 System.out.println("received " + event); 125 } 126 }; 127 128 nh.addListener("test", nl1); 129 130 Thread.sleep(1000); 131 if (args.length > 0) { 132 for (int i = 0; i < 1000; i++) { 133 nh.send(new Message(1, "test", "hello" + i)); 134 } 135 } 136 } 137 catch (Exception e) { 138 e.printStackTrace(); 139 } 140 } 141 } 142 | Popular Tags |