55
66import org .barcodeapi .core .Config ;
77import org .barcodeapi .core .Config .Cfg ;
8+ import org .barcodeapi .server .core .CidrTree ;
89import org .json .JSONArray ;
910import org .json .JSONObject ;
1011
1718 */
1819public class SubscriberCache {
1920
20- private static final Map <String , Subscriber > subscribersByName ;
21- private static final Map <String , Subscriber > subscribersByIP ;
2221 private static final Map <String , Subscriber > subscribersByKey ;
2322 private static final Map <String , Subscriber > subscribersByApp ;
23+ private static final CidrTree <Subscriber > subscribersByIP ;
2424
2525 static {
26- subscribersByName = new ConcurrentHashMap <>();
27- subscribersByIP = new ConcurrentHashMap <>();
28- subscribersByKey = new ConcurrentHashMap <>();
26+
27+ subscribersByIP = new CidrTree <>();
2928 subscribersByApp = new ConcurrentHashMap <>();
29+ subscribersByKey = new ConcurrentHashMap <>();
3030
3131 reload ();
3232 }
@@ -35,12 +35,12 @@ public class SubscriberCache {
3535 * Reload subscriber info from configuration on disk.
3636 */
3737 public static void reload () {
38+ long timeStart = System .currentTimeMillis ();
3839
3940 // Flush existing subscribers
40- subscribersByName .clear ();
4141 subscribersByIP .clear ();
42- subscribersByKey .clear ();
4342 subscribersByApp .clear ();
43+ subscribersByKey .clear ();
4444
4545 // Load subscribers, force reload
4646 JSONArray users = Config //
@@ -71,41 +71,30 @@ public static void reload() {
7171 continue ;
7272 }
7373
74- // Map of Customer Names
75- subscribersByName .put (//
76- subscriber .getCustomer (), subscriber );
77-
7874 // Map Customer IPs
7975 JSONArray subIps = subscriber .getIPs ();
8076 for (int y = 0 ; y < subIps .length (); y ++) {
8177 subscribersByIP .put (//
8278 subIps .getString (y ), subscriber );
8379 }
8480
85- // Map Customer Keys
86- JSONArray subKeys = subscriber .getKeys ();
87- for (int y = 0 ; y < subKeys .length (); y ++) {
88- subscribersByKey .put (//
89- subKeys .getString (y ), subscriber );
90- }
91-
9281 // Map Customer Applications
9382 JSONArray subApps = subscriber .getApps ();
9483 for (int y = 0 ; y < subApps .length (); y ++) {
9584 subscribersByApp .put (//
9685 subApps .getString (y ), subscriber );
9786 }
98- }
99- }
10087
101- /**
102- * Lookup a subscriber by customer name.
103- *
104- * @param name name of the customer
105- * @return the subscriber info or null
106- */
107- public static Subscriber getByName (String name ) {
108- return subscribersByName .get (name );
88+ // Map Customer Keys
89+ JSONArray subKeys = subscriber .getKeys ();
90+ for (int y = 0 ; y < subKeys .length (); y ++) {
91+ subscribersByKey .put (//
92+ subKeys .getString (y ), subscriber );
93+ }
94+ }
95+
96+ long timeDiff = (System .currentTimeMillis () - timeStart );
97+ LibLog ._logF ("Subscribers reloaded in %dms" , timeDiff );
10998 }
11099
111100 /**
0 commit comments