1 /** 2 * 3 */ 4 package javax.jmdns.impl; 5 6 import java.net.InetAddress; 7 8 /** 9 * 10 */ 11 public interface NameRegister { 12 13 /** 14 * 15 */ 16 public enum NameType { 17 /** 18 * This name represents a host name 19 */ 20 HOST, 21 /** 22 * This name represents a service name 23 */ 24 SERVICE, 25 } 26 27 public static class UniqueNamePerInterface implements NameRegister { 28 29 /* 30 * (non-Javadoc) 31 * @see javax.jmdns.impl.NameRegister#register(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 32 */ 33 @Override register(InetAddress networkInterface, String name, NameType type)34 public void register(InetAddress networkInterface, String name, NameType type) { 35 // TODO Auto-generated method stub 36 37 } 38 39 /* 40 * (non-Javadoc) 41 * @see javax.jmdns.impl.NameRegister#checkName(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 42 */ 43 @Override checkName(InetAddress networkInterface, String name, NameType type)44 public boolean checkName(InetAddress networkInterface, String name, NameType type) { 45 // TODO Auto-generated method stub 46 return false; 47 } 48 49 /* 50 * (non-Javadoc) 51 * @see javax.jmdns.impl.NameRegister#incrementHostName(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 52 */ 53 @Override incrementHostName(InetAddress networkInterface, String name, NameType type)54 public String incrementHostName(InetAddress networkInterface, String name, NameType type) { 55 // TODO Auto-generated method stub 56 return null; 57 } 58 59 } 60 61 public static class UniqueNameAcrossInterface implements NameRegister { 62 63 /* 64 * (non-Javadoc) 65 * @see javax.jmdns.impl.NameRegister#register(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 66 */ 67 @Override register(InetAddress networkInterface, String name, NameType type)68 public void register(InetAddress networkInterface, String name, NameType type) { 69 // TODO Auto-generated method stub 70 71 } 72 73 /* 74 * (non-Javadoc) 75 * @see javax.jmdns.impl.NameRegister#checkName(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 76 */ 77 @Override checkName(InetAddress networkInterface, String name, NameType type)78 public boolean checkName(InetAddress networkInterface, String name, NameType type) { 79 // TODO Auto-generated method stub 80 return false; 81 } 82 83 /* 84 * (non-Javadoc) 85 * @see javax.jmdns.impl.NameRegister#incrementHostName(java.net.InetAddress, java.lang.String, javax.jmdns.impl.NameRegister.NameType) 86 */ 87 @Override incrementHostName(InetAddress networkInterface, String name, NameType type)88 public String incrementHostName(InetAddress networkInterface, String name, NameType type) { 89 // TODO Auto-generated method stub 90 return null; 91 } 92 93 } 94 95 public static class Factory { 96 97 private static volatile NameRegister _register; 98 99 /** 100 * Register a Name register. 101 * 102 * @param register 103 * new register 104 * @throws IllegalStateException 105 * the register can only be set once 106 */ setRegistry(NameRegister register)107 public static void setRegistry(NameRegister register) throws IllegalStateException { 108 if (_register != null) { 109 throw new IllegalStateException("The register can only be set once."); 110 } 111 if (register != null) { 112 _register = register; 113 } 114 } 115 116 /** 117 * Returns the name register. 118 * 119 * @return name register 120 */ getRegistry()121 public static NameRegister getRegistry() { 122 if (_register == null) { 123 _register = new UniqueNamePerInterface(); 124 } 125 return _register; 126 } 127 128 } 129 130 /** 131 * Registers a name that is defended by this group of mDNS. 132 * 133 * @param networkInterface 134 * IP address to handle 135 * @param name 136 * name to register 137 * @param type 138 * name type to register 139 */ register(InetAddress networkInterface, String name, NameType type)140 public abstract void register(InetAddress networkInterface, String name, NameType type); 141 142 /** 143 * Checks a name that is defended by this group of mDNS. 144 * 145 * @param networkInterface 146 * IP address to handle 147 * @param name 148 * name to check 149 * @param type 150 * name type to check 151 * @return <code>true</code> if the name is not in conflict, <code>flase</code> otherwise. 152 */ checkName(InetAddress networkInterface, String name, NameType type)153 public abstract boolean checkName(InetAddress networkInterface, String name, NameType type); 154 155 /** 156 * Increments a name that is defended by this group of mDNS after it has been found in conflict. 157 * 158 * @param networkInterface 159 * IP address to handle 160 * @param name 161 * name to increment 162 * @param type 163 * name type to increments 164 * @return new name 165 */ incrementHostName(InetAddress networkInterface, String name, NameType type)166 public abstract String incrementHostName(InetAddress networkInterface, String name, NameType type); 167 168 } 169