• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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