*/\r
final class IPTrie {\r
\r
- private final IPTrieNode root;\r
+ private final IPTrieNode root;\r
\r
- IPTrie() {\r
- root = new IPTrieNode(false);\r
- }\r
+ IPTrie() {\r
+ root = new IPTrieNode(false);\r
+ }\r
\r
- int incrementAndGet(InetAddress ipAddress) {\r
- byte[] octets = ipAddress.getAddress();\r
- synchronized (root) {\r
- IPTrieNode current = root;\r
- int max = octets.length - 1;\r
- for (int offset = 0; offset < max; offset++) {\r
- int index = 0xFF & octets[offset];\r
- IPTrieNode child = current.children[index];\r
- if (child == null) {\r
- child = new IPTrieNode(offset == max - 1);\r
- current.children[index] = child;\r
- }\r
- current = child;\r
- }\r
- int index = 0xFF & octets[max];\r
- current.values[index]++;\r
- return current.values[index];\r
- }\r
- }\r
+ int incrementAndGet(InetAddress ipAddress) {\r
+ byte[] octets = ipAddress.getAddress();\r
+ synchronized (root) {\r
+ IPTrieNode current = root;\r
+ int max = octets.length - 1;\r
+ for (int offset = 0; offset < max; offset++) {\r
+ int index = 0xFF & octets[offset];\r
+ IPTrieNode child = current.children[index];\r
+ if (child == null) {\r
+ child = new IPTrieNode(offset == max - 1);\r
+ current.children[index] = child;\r
+ }\r
+ current = child;\r
+ }\r
+ int index = 0xFF & octets[max];\r
+ current.values[index]++;\r
+ return current.values[index];\r
+ }\r
+ }\r
\r
- void clear() {\r
- synchronized (root) {\r
- Arrays.fill(root.children, null);\r
- }\r
- }\r
+ void clear() {\r
+ synchronized (root) {\r
+ Arrays.fill(root.children, null);\r
+ }\r
+ }\r
\r
- private static final class IPTrieNode {\r
- final IPTrieNode[] children;\r
- final int[] values;\r
- private IPTrieNode(boolean terminal) {\r
- if (terminal) {\r
- children = null;\r
- values = new int[256];\r
- } else {\r
- children = new IPTrieNode[256];\r
- values = null;\r
- }\r
- }\r
- }\r
+ private static final class IPTrieNode {\r
+ final IPTrieNode[] children;\r
+ final int[] values;\r
+\r
+ private IPTrieNode(boolean terminal) {\r
+ if (terminal) {\r
+ children = null;\r
+ values = new int[256];\r
+ } else {\r
+ children = new IPTrieNode[256];\r
+ values = null;\r
+ }\r
+ }\r
+ }\r
\r
}
\ No newline at end of file