VocalServer.java
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:1k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.*;
  4. class VocalServer {
  5. //
  6. Map myServers;
  7. //
  8. public VocalServer() {
  9. myServers = new TreeMap();
  10. }
  11. //
  12. void handleHeartbeat( DatagramPacket rxHeartbeatData ) {
  13. HeartbeatData  hbData = new HeartbeatData( rxHeartbeatData.getData() );
  14. String Address = rxHeartbeatData.getAddress().getHostAddress();
  15. String Port =  hbData.getPort();
  16. String key = Address  + ":" + Port;
  17. Map m = Collections.synchronizedMap( myServers );
  18. synchronized(m) {
  19. HeartbeatSender hbSender  = (HeartbeatSender) myServers.get( key );
  20. if (hbSender == null ) {
  21. hbSender  = new HeartbeatSender( rxHeartbeatData.getAddress(), Port, rxHeartbeatData.getData() );
  22. myServers .put( key, hbSender );
  23. }
  24. else
  25. hbSender.receivedHeartbeat();
  26. }
  27. }
  28. public void handleHouseKeeping() {
  29. Map m = Collections.synchronizedMap( myServers );
  30. synchronized(m) {
  31. Iterator i = m.keySet().iterator();
  32. while (i.hasNext()) {
  33. try {
  34. Object key =  i.next();
  35. HeartbeatSender hbSender  = (HeartbeatSender) m.get( key );
  36. hbSender.incMissedHeartbeat();
  37. }
  38. catch (Exception e) { 
  39. e.printStackTrace();
  40.   }
  41. }
  42. }
  43. }
  44. //
  45. public String toString() {
  46.         return "Number of Vocal Servers: "  + myServers.size()  + "Vocal Servers: " + myServers; 
  47. }
  48. }