Init
This commit is contained in:
328
build/push/proto/mcs.proto
Normal file
328
build/push/proto/mcs.proto
Normal file
@ -0,0 +1,328 @@
|
||||
// Copyright 2013 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
//
|
||||
// MCS protocol for communication between Chrome client and Mobile Connection
|
||||
// Server .
|
||||
|
||||
syntax = "proto2";
|
||||
|
||||
option optimize_for = LITE_RUNTIME;
|
||||
|
||||
package mcs_proto;
|
||||
|
||||
/*
|
||||
Common fields/comments:
|
||||
|
||||
stream_id: no longer sent by server, each side keeps a counter
|
||||
last_stream_id_received: sent only if a packet was received since last time
|
||||
a last_stream was sent
|
||||
status: new bitmask including the 'idle' as bit 0.
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
TAG: 0
|
||||
*/
|
||||
message HeartbeatPing {
|
||||
optional int32 stream_id = 1;
|
||||
optional int32 last_stream_id_received = 2;
|
||||
optional int64 status = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
TAG: 1
|
||||
*/
|
||||
message HeartbeatAck {
|
||||
optional int32 stream_id = 1;
|
||||
optional int32 last_stream_id_received = 2;
|
||||
optional int64 status = 3;
|
||||
}
|
||||
|
||||
message ErrorInfo {
|
||||
required int32 code = 1;
|
||||
optional string message = 2;
|
||||
optional string type = 3;
|
||||
optional Extension extension = 4;
|
||||
}
|
||||
|
||||
// MobileSettings class.
|
||||
// "u:f", "u:b", "u:s" - multi user devices reporting foreground, background
|
||||
// and stopped users.
|
||||
// hbping: heatbeat ping interval
|
||||
// rmq2v: include explicit stream IDs
|
||||
|
||||
message Setting {
|
||||
required string name = 1;
|
||||
required string value = 2;
|
||||
}
|
||||
|
||||
message HeartbeatStat {
|
||||
required string ip = 1;
|
||||
required bool timeout = 2;
|
||||
required int32 interval_ms = 3;
|
||||
}
|
||||
|
||||
message HeartbeatConfig {
|
||||
optional bool upload_stat = 1;
|
||||
optional string ip = 2;
|
||||
optional int32 interval_ms = 3;
|
||||
}
|
||||
|
||||
// ClientEvents are used to inform the server of failed and successful
|
||||
// connections.
|
||||
message ClientEvent {
|
||||
enum Type {
|
||||
UNKNOWN = 0;
|
||||
// Count of discarded events if the buffer filled up and was trimmed.
|
||||
DISCARDED_EVENTS = 1;
|
||||
// Failed connection event: the connection failed to be established or we
|
||||
// had a login error.
|
||||
FAILED_CONNECTION = 2;
|
||||
// Successful connection event: information about the last successful
|
||||
// connection, including the time at which it was established.
|
||||
SUCCESSFUL_CONNECTION = 3;
|
||||
}
|
||||
|
||||
// Common fields [1-99]
|
||||
optional Type type = 1;
|
||||
|
||||
// Fields for DISCARDED_EVENTS messages [100-199]
|
||||
optional uint32 number_discarded_events = 100;
|
||||
|
||||
// Fields for FAILED_CONNECTION and SUCCESSFUL_CONNECTION messages [200-299]
|
||||
// Network type is a value in net::NetworkChangeNotifier::ConnectionType.
|
||||
optional int32 network_type = 200;
|
||||
// Reserved for network_port.
|
||||
reserved 201;
|
||||
optional uint64 time_connection_started_ms = 202;
|
||||
optional uint64 time_connection_ended_ms = 203;
|
||||
// Error code should be a net::Error value.
|
||||
optional int32 error_code = 204;
|
||||
|
||||
// Fields for SUCCESSFUL_CONNECTION messages [300-399]
|
||||
optional uint64 time_connection_established_ms = 300;
|
||||
}
|
||||
|
||||
/**
|
||||
TAG: 2
|
||||
*/
|
||||
message LoginRequest {
|
||||
enum AuthService {
|
||||
ANDROID_ID = 2;
|
||||
}
|
||||
required string id = 1; // Must be present ( proto required ), may be empty
|
||||
// string.
|
||||
// mcs.android.com.
|
||||
required string domain = 2;
|
||||
// Decimal android ID
|
||||
required string user = 3;
|
||||
|
||||
required string resource = 4;
|
||||
|
||||
// Secret
|
||||
required string auth_token = 5;
|
||||
|
||||
// Format is: android-HEX_DEVICE_ID
|
||||
// The user is the decimal value.
|
||||
optional string device_id = 6;
|
||||
|
||||
// RMQ1 - no longer used
|
||||
optional int64 last_rmq_id = 7;
|
||||
|
||||
repeated Setting setting = 8;
|
||||
//optional int32 compress = 9;
|
||||
repeated string received_persistent_id = 10;
|
||||
|
||||
// Replaced by "rmq2v" setting
|
||||
// optional bool include_stream_ids = 11;
|
||||
|
||||
optional bool adaptive_heartbeat = 12;
|
||||
optional HeartbeatStat heartbeat_stat = 13;
|
||||
// Must be true.
|
||||
optional bool use_rmq2 = 14;
|
||||
optional int64 account_id = 15;
|
||||
|
||||
// ANDROID_ID = 2
|
||||
optional AuthService auth_service = 16;
|
||||
|
||||
optional int32 network_type = 17;
|
||||
optional int64 status = 18;
|
||||
|
||||
// 19, 20, and 21 are not currently populated by Chrome.
|
||||
reserved 19, 20, 21;
|
||||
|
||||
// Events recorded on the client after the last successful connection.
|
||||
repeated ClientEvent client_event = 22;
|
||||
}
|
||||
|
||||
/**
|
||||
* TAG: 3
|
||||
*/
|
||||
message LoginResponse {
|
||||
required string id = 1;
|
||||
// Not used.
|
||||
optional string jid = 2;
|
||||
// Null if login was ok.
|
||||
optional ErrorInfo error = 3;
|
||||
repeated Setting setting = 4;
|
||||
optional int32 stream_id = 5;
|
||||
// Should be "1"
|
||||
optional int32 last_stream_id_received = 6;
|
||||
optional HeartbeatConfig heartbeat_config = 7;
|
||||
// used by the client to synchronize with the server timestamp.
|
||||
optional int64 server_timestamp = 8;
|
||||
}
|
||||
|
||||
message StreamErrorStanza {
|
||||
required string type = 1;
|
||||
optional string text = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* TAG: 4
|
||||
*/
|
||||
message Close {
|
||||
}
|
||||
|
||||
message Extension {
|
||||
// 12: SelectiveAck
|
||||
// 13: StreamAck
|
||||
required int32 id = 1;
|
||||
required bytes data = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* TAG: 7
|
||||
* IqRequest must contain a single extension. IqResponse may contain 0 or 1
|
||||
* extensions.
|
||||
*/
|
||||
message IqStanza {
|
||||
enum IqType {
|
||||
GET = 0;
|
||||
SET = 1;
|
||||
RESULT = 2;
|
||||
IQ_ERROR = 3;
|
||||
}
|
||||
|
||||
optional int64 rmq_id = 1;
|
||||
required IqType type = 2;
|
||||
required string id = 3;
|
||||
optional string from = 4;
|
||||
optional string to = 5;
|
||||
optional ErrorInfo error = 6;
|
||||
|
||||
// Only field used in the 38+ protocol (besides common last_stream_id_received, status, rmq_id)
|
||||
optional Extension extension = 7;
|
||||
|
||||
optional string persistent_id = 8;
|
||||
optional int32 stream_id = 9;
|
||||
optional int32 last_stream_id_received = 10;
|
||||
optional int64 account_id = 11;
|
||||
optional int64 status = 12;
|
||||
}
|
||||
|
||||
message AppData {
|
||||
required string key = 1;
|
||||
required string value = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* TAG: 8
|
||||
*/
|
||||
message DataMessageStanza {
|
||||
// Not used.
|
||||
// optional int64 rmq_id = 1;
|
||||
|
||||
// This is the message ID, set by client, DMP.9 (message_id)
|
||||
optional string id = 2;
|
||||
|
||||
// Project ID of the sender, DMP.1
|
||||
required string from = 3;
|
||||
|
||||
// Part of DMRequest - also the key in DataMessageProto.
|
||||
optional string to = 4;
|
||||
|
||||
// Package name. DMP.2
|
||||
required string category = 5;
|
||||
|
||||
// The collapsed key, DMP.3
|
||||
optional string token = 6;
|
||||
|
||||
// User data + GOOGLE. prefixed special entries, DMP.4
|
||||
repeated AppData app_data = 7;
|
||||
|
||||
// Not used.
|
||||
optional bool from_trusted_server = 8;
|
||||
|
||||
// Part of the ACK protocol, returned in DataMessageResponse on server side.
|
||||
// It's part of the key of DMP.
|
||||
optional string persistent_id = 9;
|
||||
|
||||
// In-stream ack. Increments on each message sent - a bit redundant
|
||||
// Not used in DMP/DMR.
|
||||
optional int32 stream_id = 10;
|
||||
optional int32 last_stream_id_received = 11;
|
||||
|
||||
// Not used.
|
||||
// optional string permission = 12;
|
||||
|
||||
// Sent by the device shortly after registration.
|
||||
optional string reg_id = 13;
|
||||
|
||||
// Not used.
|
||||
// optional string pkg_signature = 14;
|
||||
// Not used.
|
||||
// optional string client_id = 15;
|
||||
|
||||
// serial number of the target user, DMP.8
|
||||
// It is the 'serial number' according to user manager.
|
||||
optional int64 device_user_id = 16;
|
||||
|
||||
// Time to live, in seconds.
|
||||
optional int32 ttl = 17;
|
||||
// Timestamp ( according to client ) when message was sent by app, in seconds
|
||||
optional int64 sent = 18;
|
||||
|
||||
// How long has the message been queued before the flush, in seconds.
|
||||
// This is needed to account for the time difference between server and
|
||||
// client: server should adjust 'sent' based on its 'receive' time.
|
||||
optional int32 queued = 19;
|
||||
|
||||
optional int64 status = 20;
|
||||
|
||||
// Optional field containing the binary payload of the message.
|
||||
optional bytes raw_data = 21;
|
||||
|
||||
// Not used.
|
||||
// The maximum delay of the message, in seconds.
|
||||
// optional int32 max_delay = 22;
|
||||
|
||||
// Not used.
|
||||
// How long the message was delayed before it was sent, in seconds.
|
||||
// optional int32 actual_delay = 23;
|
||||
|
||||
// If set the server requests immediate ack. Used for important messages and
|
||||
// for testing.
|
||||
optional bool immediate_ack = 24;
|
||||
|
||||
// Not used.
|
||||
// Enables message receipts from MCS/GCM back to CCS clients
|
||||
// optional bool delivery_receipt_requested = 25;
|
||||
}
|
||||
|
||||
/**
|
||||
Included in IQ with ID 13, sent from client or server after 10 unconfirmed
|
||||
messages.
|
||||
*/
|
||||
message StreamAck {
|
||||
// No last_streamid_received required. This is included within an IqStanza,
|
||||
// which includes the last_stream_id_received.
|
||||
}
|
||||
|
||||
/**
|
||||
Included in IQ sent after LoginResponse from server with ID 12.
|
||||
*/
|
||||
message SelectiveAck {
|
||||
repeated string id = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user