Add channel_common.proto

git-svn-id: http://google-cache-invalidation-api.googlecode.com/svn/trunk@324 1cc9d426-c294-39be-ba72-c0199ca0f247
diff --git a/src/google/cacheinvalidation/channel_common.proto b/src/google/cacheinvalidation/channel_common.proto
new file mode 100644
index 0000000..99310fd
--- /dev/null
+++ b/src/google/cacheinvalidation/channel_common.proto
@@ -0,0 +1,58 @@
+// Copyright 2011 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Common utilities used by all channel related protos.
+// This is also publicly visible to all channel implementors.
+
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
+
+package ipc.invalidation;
+
+option java_outer_classname = "ChannelCommon";
+option javascript_package = "invalidation.proto";
+
+option java_generate_equals_and_hash = true;
+
+option cc_api_version = 2;
+option py_api_version = 2;
+option java_api_version = 2;
+
+message ChannelMessageEncoding {
+    // What kind of encoding is used for network_message
+  enum MessageEncoding {
+    // Raw proto encoding
+    PROTOBUF_BINARY_FORMAT = 1;
+
+    // JSPB-encoding: https://sites.google.com/a/google.com/jspblite/Home
+    PROTOBUF_JSON_FORMAT = 2;
+  }
+}
+
+message NetworkEndpointId {
+  enum NetworkAddress {
+    TEST = 1;  // A delivery service for testing
+
+    // Low numbers reserved.
+    ANDROID = 113;  // Android delivery service using c2dm / http.
+  }
+  optional NetworkAddress network_address = 1;
+  optional bytes client_address = 2;
+
+  // Optional. When true, the client is considered offline but the
+  // client_address is maintained so that the client can potentially be reached.
+  // When false or undefined, the client is considered online.
+  optional bool is_offline = 3;
+}