2 * Copyright 2011 Google Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.google.ipc.invalidation.ticl.proto;
18 import com.google.ipc.invalidation.ticl.proto.AndroidChannel.AndroidEndpointId;
19 import com.google.ipc.invalidation.ticl.proto.ChannelCommon.NetworkEndpointId;
20 import com.google.ipc.invalidation.ticl.proto.ChannelCommon.NetworkEndpointId.NetworkAddress;
21 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ClientVersion;
22 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.InvalidationP;
23 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ObjectIdP;
24 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationP;
25 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationStatus;
26 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.RegistrationSummary;
27 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.ServerHeader;
28 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.StatusP;
29 import com.google.ipc.invalidation.ticl.proto.ClientProtocol.Version;
30 import com.google.ipc.invalidation.util.Bytes;
31 import com.google.ipc.invalidation.util.Preconditions;
34 /** Utilities for creating protocol buffer wrappers. */
35 public class CommonProtos {
37 public static boolean isAllObjectId(ObjectIdP objectId) {
38 return ClientConstants.ALL_OBJECT_ID.equals(objectId);
41 /** Returns true iff status corresponds to permanent failure. */
42 public static boolean isPermanentFailure(StatusP status) {
43 return status.getCode() == StatusP.Code.PERMANENT_FAILURE;
46 /** Returns true iff status corresponds to success. */
47 public static boolean isSuccess(StatusP status) {
48 return status.getCode() == StatusP.Code.SUCCESS;
51 /** Returns true iff status corresponds to transient failure. */
52 public static boolean isTransientFailure(StatusP status) {
53 return status.getCode() == StatusP.Code.TRANSIENT_FAILURE;
57 * Constructs a network endpoint id for an Android client with the given {@code registrationId},
58 * {@code clientKey}, and {@code packageName}.
60 public static NetworkEndpointId newAndroidEndpointId(String registrationId, String clientKey,
61 String packageName, Version channelVersion) {
62 Preconditions.checkNotNull(registrationId, "Null registration id");
63 Preconditions.checkNotNull(clientKey, "Null client key");
64 Preconditions.checkNotNull(packageName, "Null package name");
65 Preconditions.checkNotNull(channelVersion, "Null channel version");
67 AndroidEndpointId endpoint = AndroidEndpointId.create(registrationId, clientKey,
68 /* senderId */ null, channelVersion, packageName);
69 return NetworkEndpointId.create(NetworkAddress.ANDROID, new Bytes(endpoint.toByteArray()),
73 public static ClientVersion newClientVersion(String platform, String language,
74 String applicationInfo) {
75 return ClientVersion.create(ClientConstants.CLIENT_VERSION_VALUE, platform, language,
79 public static StatusP newFailureStatus(boolean isTransient, String description) {
80 return StatusP.create(
81 isTransient ? StatusP.Code.TRANSIENT_FAILURE : StatusP.Code.PERMANENT_FAILURE, description);
85 public static InvalidationP newInvalidationP(ObjectIdP objectId, long version,
86 boolean isTrickleRestart, byte[] payload) {
87 return InvalidationP.create(objectId, /* isKnownVersion */ true,
88 version, Bytes.fromByteArray(payload), /* bridgeArrivalTimeMsDeprecated */ null,
92 public static InvalidationP newInvalidationPForUnknownVersion(ObjectIdP oid,
93 long sequenceNumber) {
94 return InvalidationP.create(oid, /* isKnownVersion */ false, sequenceNumber, /* payload */ null,
95 /* bridgeArrivalTimeMsDeprecated */ null, /* isTrickleRestart */ true);
98 public static RegistrationP newRegistrationP(ObjectIdP oid, boolean isReg) {
99 return RegistrationP.create(oid,
100 isReg ? RegistrationP.OpType.REGISTER : RegistrationP.OpType.UNREGISTER);
103 public static ServerHeader newServerHeader(byte[] clientToken, long currentTimeMs,
104 RegistrationSummary registrationSummary, String messageId) {
105 return ServerHeader.create(ClientConstants.PROTOCOL_VERSION, new Bytes(clientToken),
106 registrationSummary, currentTimeMs, messageId);
109 public static StatusP newSuccessStatus() {
110 return StatusP.create(StatusP.Code.SUCCESS, null);
113 public static RegistrationStatus newTransientFailureRegistrationStatus(RegistrationP registration,
114 String description) {
115 return RegistrationStatus.create(registration, newFailureStatus(true, description));
118 // Prevent instantiation.
119 private CommonProtos() {}