OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 package org.chromium.sync.notifier; | |
6 | |
7 /** | |
8 * An injectable singleton that provides an invalidation client with an appropri
ate unique name. | |
9 * | |
10 * This singleton will always provide a somewhat reasonable name. With proper s
upport from outside | |
11 * components, it will be able to provide a name that is consistent across resta
rts. | |
12 */ | |
13 public class InvalidationClientNameProvider { | |
14 private static final Object LOCK = new Object(); | |
15 | |
16 private static InvalidationClientNameProvider sInstance; | |
17 | |
18 private final Object mLock; | |
19 | |
20 private InvalidationClientNameGenerator mGenerator; | |
21 | |
22 private byte[] mUniqueId; | |
23 | |
24 public static InvalidationClientNameProvider get() { | |
25 synchronized (LOCK) { | |
26 if (sInstance == null) { | |
27 sInstance = new InvalidationClientNameProvider(); | |
28 } | |
29 return sInstance; | |
30 } | |
31 } | |
32 | |
33 InvalidationClientNameProvider() { | |
34 mLock = new Object(); | |
35 mGenerator = new RandomizedInvalidationClientNameGenerator(); | |
36 } | |
37 | |
38 /** Returns a consistent unique string of bytes for use as an invalidator cl
ient ID. */ | |
39 public byte[] getInvalidatorClientName() { | |
40 synchronized (mLock) { | |
41 if (mUniqueId == null) { | |
42 mUniqueId = mGenerator.generateInvalidatorClientName(); | |
43 } | |
44 return mUniqueId; | |
45 } | |
46 } | |
47 | |
48 public void setPreferredClientNameGenerator(InvalidationClientNameGenerator
generator) { | |
49 mGenerator = generator; | |
50 } | |
51 } | |
OLD | NEW |