Java源码示例:com.google.protos.ipc.invalidation.Types
示例1
/**
* Create an Intent that will start the invalidation listener service and
* register for the object ids with the specified sources and names.
* Sync-specific objects are filtered out of the request since Sync types
* are registered using the other version of createRegisterIntent.
*/
public static Intent createRegisterIntent(
Account account, int[] objectSources, String[] objectNames) {
if (objectSources.length != objectNames.length) {
throw new IllegalArgumentException(
"objectSources and objectNames must have the same length");
}
// Add all non-Sync objects to new lists.
ArrayList<Integer> sources = new ArrayList<Integer>();
ArrayList<String> names = new ArrayList<String>();
for (int i = 0; i < objectSources.length; i++) {
if (objectSources[i] != Types.ObjectSource.CHROME_SYNC) {
sources.add(objectSources[i]);
names.add(objectNames[i]);
}
}
Intent registerIntent = new Intent(ACTION_REGISTER);
registerIntent.putIntegerArrayListExtra(EXTRA_REGISTERED_OBJECT_SOURCES, sources);
registerIntent.putStringArrayListExtra(EXTRA_REGISTERED_OBJECT_NAMES, names);
registerIntent.putExtra(EXTRA_ACCOUNT, account);
return registerIntent;
}
示例2
/**
* Create an Intent that will start the invalidation listener service and
* register for the object ids with the specified sources and names.
* Sync-specific objects are filtered out of the request since Sync types
* are registered using the other version of createRegisterIntent.
*/
public static Intent createRegisterIntent(Account account, int[] objectSources,
String[] objectNames) {
Preconditions.checkArgument(objectSources.length == objectNames.length,
"objectSources and objectNames must have the same length");
// Add all non-Sync objects to new lists.
ArrayList<Integer> sources = new ArrayList<Integer>();
ArrayList<String> names = new ArrayList<String>();
for (int i = 0; i < objectSources.length; i++) {
if (objectSources[i] != Types.ObjectSource.Type.CHROME_SYNC.getNumber()) {
sources.add(objectSources[i]);
names.add(objectNames[i]);
}
}
Intent registerIntent = new Intent(ACTION_REGISTER);
registerIntent.putIntegerArrayListExtra(EXTRA_REGISTERED_OBJECT_SOURCES, sources);
registerIntent.putStringArrayListExtra(EXTRA_REGISTERED_OBJECT_NAMES, names);
registerIntent.putExtra(EXTRA_ACCOUNT, account);
return registerIntent;
}
示例3
/**
* Create an Intent that will start the invalidation listener service and
* register for the object ids with the specified sources and names.
* Sync-specific objects are filtered out of the request since Sync types
* are registered using the other version of createRegisterIntent.
*/
public static Intent createRegisterIntent(Account account, int[] objectSources,
String[] objectNames) {
Preconditions.checkArgument(objectSources.length == objectNames.length,
"objectSources and objectNames must have the same length");
// Add all non-Sync objects to new lists.
ArrayList<Integer> sources = new ArrayList<Integer>();
ArrayList<String> names = new ArrayList<String>();
for (int i = 0; i < objectSources.length; i++) {
if (objectSources[i] != Types.ObjectSource.Type.CHROME_SYNC.getNumber()) {
sources.add(objectSources[i]);
names.add(objectNames[i]);
}
}
Intent registerIntent = new Intent(ACTION_REGISTER);
registerIntent.putIntegerArrayListExtra(EXTRA_REGISTERED_OBJECT_SOURCES, sources);
registerIntent.putStringArrayListExtra(EXTRA_REGISTERED_OBJECT_NAMES, names);
registerIntent.putExtra(EXTRA_ACCOUNT, account);
return registerIntent;
}
示例4
private BrowserStartupController.StartupCallback getStartupCallback(
final Context context, final Account acct, Bundle extras,
final SyncResult syncResult, final Semaphore semaphore) {
final boolean syncAllTypes = extras.getString(INVALIDATION_OBJECT_ID_KEY) == null;
final int objectSource = syncAllTypes ? 0 : extras.getInt(INVALIDATION_OBJECT_SOURCE_KEY);
final String objectId = syncAllTypes ? "" : extras.getString(INVALIDATION_OBJECT_ID_KEY);
final long version = syncAllTypes ? 0 : extras.getLong(INVALIDATION_VERSION_KEY);
final String payload = syncAllTypes ? "" : extras.getString(INVALIDATION_PAYLOAD_KEY);
return new BrowserStartupController.StartupCallback() {
@Override
public void onSuccess(boolean alreadyStarted) {
// Startup succeeded, so we can tickle the sync engine.
if (syncAllTypes) {
Log.v(TAG, "Received sync tickle for all types.");
requestSyncForAllTypes();
} else {
// Invalidations persisted before objectSource was added should be assumed to be
// for Sync objects. TODO(stepco): Remove this check once all persisted
// invalidations can be expected to have the objectSource.
int resolvedSource = objectSource;
if (resolvedSource == 0) {
resolvedSource = Types.ObjectSource.Type.CHROME_SYNC.getNumber();
}
Log.v(TAG, "Received sync tickle for " + resolvedSource + " " + objectId + ".");
requestSync(resolvedSource, objectId, version, payload);
}
semaphore.release();
}
@Override
public void onFailure() {
// The startup failed, so we reset the delayed sync state.
DelayedSyncController.getInstance().setDelayedSync(context, acct.name);
// Using numIoExceptions so Android will treat this as a soft error.
syncResult.stats.numIoExceptions++;
semaphore.release();
}
};
}
示例5
private BrowserStartupController.StartupCallback getStartupCallback(
final Context context, final Account acct, Bundle extras,
final SyncResult syncResult, final Semaphore semaphore) {
final boolean syncAllTypes = extras.getString(INVALIDATION_OBJECT_ID_KEY) == null;
final int objectSource = syncAllTypes ? 0 : extras.getInt(INVALIDATION_OBJECT_SOURCE_KEY);
final String objectId = syncAllTypes ? "" : extras.getString(INVALIDATION_OBJECT_ID_KEY);
final long version = syncAllTypes ? 0 : extras.getLong(INVALIDATION_VERSION_KEY);
final String payload = syncAllTypes ? "" : extras.getString(INVALIDATION_PAYLOAD_KEY);
return new BrowserStartupController.StartupCallback() {
@Override
public void onSuccess(boolean alreadyStarted) {
// Startup succeeded, so we can tickle the sync engine.
if (syncAllTypes) {
Log.v(TAG, "Received sync tickle for all types.");
requestSyncForAllTypes();
} else {
// Invalidations persisted before objectSource was added should be assumed to be
// for Sync objects. TODO(stepco): Remove this check once all persisted
// invalidations can be expected to have the objectSource.
int resolvedSource = objectSource;
if (resolvedSource == 0) {
resolvedSource = Types.ObjectSource.Type.CHROME_SYNC.getNumber();
}
Log.v(TAG, "Received sync tickle for " + resolvedSource + " " + objectId + ".");
requestSync(resolvedSource, objectId, version, payload);
}
semaphore.release();
}
@Override
public void onFailure() {
// The startup failed, so we reset the delayed sync state.
DelayedSyncController.getInstance().setDelayedSync(context, acct.name);
// Using numIoExceptions so Android will treat this as a soft error.
syncResult.stats.numIoExceptions++;
semaphore.release();
}
};
}
示例6
public void requestSyncFromNativeChromeForAllTypes() {
notifyInvalidationToNativeChrome(Types.ObjectSource.CHROME_SYNC, null, 0L, null);
}
示例7
/**
* Converts a notification type into an ObjectId.
*
* If the model type is not an invalidation type, this function uses the string "NULL".
*/
private static ObjectId toObjectId(String notificationType) {
String objectIdString = isInvalidationType(notificationType) ? notificationType : "NULL";
return ObjectId.newInstance(Types.ObjectSource.CHROME_SYNC, objectIdString.getBytes());
}