PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/src/inet/java/IpInterfacePeer.java

https://bitbucket.org/bedlaczech/fan-1.0
Java | 216 lines | 167 code | 27 blank | 22 comment | 15 complexity | 2fbb2e8aa8fedd1b2cee73b210328b27 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. //
  2. // Copyright (c) 2013, Brian Frank and Andy Frank
  3. // Licensed under the Academic Free License version 3.0
  4. //
  5. // History:
  6. // 5 Jul 13 Brian Frank Creation
  7. //
  8. package fan.inet;
  9. import java.io.*;
  10. import java.net.*;
  11. import java.util.Enumeration;
  12. import fan.sys.*;
  13. public class IpInterfacePeer
  14. {
  15. //////////////////////////////////////////////////////////////////////////
  16. // Peer Factory
  17. //////////////////////////////////////////////////////////////////////////
  18. public static IpInterfacePeer make(IpInterface fan)
  19. {
  20. return new IpInterfacePeer();
  21. }
  22. //////////////////////////////////////////////////////////////////////////
  23. // Lookup
  24. //////////////////////////////////////////////////////////////////////////
  25. public static List list()
  26. {
  27. try
  28. {
  29. List acc = new List(type);
  30. Enumeration e = NetworkInterface.getNetworkInterfaces();
  31. while (e.hasMoreElements())
  32. acc.add(make((NetworkInterface)e.nextElement()));
  33. return acc;
  34. }
  35. catch (IOException e)
  36. {
  37. throw IOErr.make(e);
  38. }
  39. }
  40. public static IpInterface findByAddr(IpAddr addr) { return findByAddr(addr, true); }
  41. public static IpInterface findByAddr(IpAddr addr, boolean checked)
  42. {
  43. try
  44. {
  45. NetworkInterface java = NetworkInterface.getByInetAddress(addr.peer.java);
  46. if (java != null) return make(java);
  47. if (checked) throw UnresolvedErr.make("No interface for addr: " + addr);
  48. return null;
  49. }
  50. catch (IOException e)
  51. {
  52. throw IOErr.make(e);
  53. }
  54. }
  55. public static IpInterface findByName(String name) { return findByName(name, true); }
  56. public static IpInterface findByName(String name, boolean checked)
  57. {
  58. try
  59. {
  60. NetworkInterface java = NetworkInterface.getByName(name);
  61. if (java != null) return make(java);
  62. if (checked) throw UnresolvedErr.make("No interface for name: " + name);
  63. return null;
  64. }
  65. catch (IOException e)
  66. {
  67. throw IOErr.make(e);
  68. }
  69. }
  70. static IpInterface make(NetworkInterface java)
  71. {
  72. if (java == null) throw new IllegalArgumentException();
  73. IpInterface fan = IpInterface.make();
  74. fan.peer.java = java;
  75. return fan;
  76. }
  77. //////////////////////////////////////////////////////////////////////////
  78. // Identity
  79. //////////////////////////////////////////////////////////////////////////
  80. public long hash(IpInterface fan)
  81. {
  82. return java.hashCode();
  83. }
  84. public boolean equals(IpInterface fan, Object obj)
  85. {
  86. if (obj instanceof IpInterface)
  87. return this.java.equals(((IpInterface)obj).peer.java);
  88. else
  89. return false;
  90. }
  91. public String toStr(IpInterface fan)
  92. {
  93. return java.toString();
  94. }
  95. //////////////////////////////////////////////////////////////////////////
  96. // Methods
  97. //////////////////////////////////////////////////////////////////////////
  98. public String name(IpInterface fan)
  99. {
  100. String name = java.getName();
  101. if (name == null) return "?";
  102. return name;
  103. }
  104. public String dis(IpInterface fan)
  105. {
  106. return java.getDisplayName();
  107. }
  108. public List addrs(IpInterface fan)
  109. {
  110. List acc = new List(IpAddrPeer.type);
  111. Enumeration e = java.getInetAddresses();
  112. while (e.hasMoreElements())
  113. acc.add(IpAddrPeer.make((InetAddress)e.nextElement()));
  114. return acc;
  115. }
  116. public boolean isUp(IpInterface fan)
  117. {
  118. try
  119. {
  120. return java.isUp();
  121. }
  122. catch (IOException e)
  123. {
  124. throw IOErr.make(e);
  125. }
  126. }
  127. public Buf hardwareAddr(IpInterface fan)
  128. {
  129. try
  130. {
  131. byte[] addr = java.getHardwareAddress();
  132. if (addr == null) return null;
  133. return new MemBuf(addr);
  134. }
  135. catch (IOException e)
  136. {
  137. throw IOErr.make(e);
  138. }
  139. }
  140. public long mtu(IpInterface fan)
  141. {
  142. try
  143. {
  144. return java.getMTU();
  145. }
  146. catch (IOException e)
  147. {
  148. throw IOErr.make(e);
  149. }
  150. }
  151. public boolean supportsMulticast(IpInterface fan)
  152. {
  153. try
  154. {
  155. return java.supportsMulticast();
  156. }
  157. catch (IOException e)
  158. {
  159. throw IOErr.make(e);
  160. }
  161. }
  162. public boolean isPointToPoint(IpInterface fan)
  163. {
  164. try
  165. {
  166. return java.isPointToPoint();
  167. }
  168. catch (IOException e)
  169. {
  170. throw IOErr.make(e);
  171. }
  172. }
  173. public boolean isLoopback(IpInterface fan)
  174. {
  175. try
  176. {
  177. return java.isLoopback();
  178. }
  179. catch (IOException e)
  180. {
  181. throw IOErr.make(e);
  182. }
  183. }
  184. //////////////////////////////////////////////////////////////////////////
  185. // Fields
  186. //////////////////////////////////////////////////////////////////////////
  187. static final Type type = Type.find("inet::IpInterface");
  188. public NetworkInterface java;
  189. }