blob: 31ba92ba1f119e1f35b6035122df44c253a93631 [file] [log] [blame]
/*
* Copyright 2009 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.
*/
package com.google.gwt.dev.shell.remoteui;
/*
* Notes:
* - GWT 2.0.3 and earlier set the enum fields as "required" (such as requestType, which is
* of type RequestType, which is an enum). This ended up preventing new values to be
* added to the enums. Those enum fields are now set as "optional", allowing future versions
* of GPE and GWT to add new values to the enums.
*/
option java_outer_classname = "RemoteMessageProto";
// Outer envelope for all messages
message Message {
// Two types of messages - either a request, or a response
enum MessageType {
REQUEST = 0;
RESPONSE = 1;
FAILURE = 2;
}
// A request message. This is the root type for all request messages
message Request {
// Every request must be addressed to a service. The two types of
// services are the ViewerService, and the DevModeService. The ViewerService
// accepts commands for a Viewer. The DevModeService accepts requests for
// the Development Mode Server.
enum ServiceType {
VIEWER = 0;
DEV_MODE = 1;
}
// The root type for all requests for the ViewerService
message ViewerRequest {
// The different types of requests for a ViewerService
enum RequestType {
CAPABILITY_EXCHANGE = 0;
ADD_LOG = 1;
ADD_LOG_BRANCH = 2;
ADD_LOG_ENTRY = 3;
DISCONNECT_LOG = 4;
INITIALIZE = 5;
}
// Request the capabilities of the ViewerService. No additional
// information is needed at this time.
message CapabilityExchange {
}
// Add a log message to the view
message AddLog {
// The type of log - either a web server log, a module log, or
// the main log
enum LogType {
MAIN = 0;
MODULE = 1;
WEB_SERVER = 2;
}
// Information needed for creating a Module Log
message ModuleLog {
required string name = 1;
optional bytes icon = 2;
optional string sessionKey = 3;
optional string userAgent = 4;
optional string url = 5;
optional string tabKey = 6;
optional string remoteHost = 7;
}
// Information needed for creating a Server Log
message ServerLog {
required string name = 1;
optional bytes icon = 2;
}
// Information needed for creating the Main Log. At this time, no
// additional information is needed.
message MainLog {
}
optional LogType type = 1;
optional ModuleLog moduleLog = 2;
optional ServerLog serverLog = 3;
optional MainLog mainLog = 4;
}
// The data for a log entry
message LogData {
// The HelpInfo portion of the log entry
message HelpInfo {
optional string url = 1;
optional string text = 2;
}
required string summary = 1;
optional string level = 2;
optional bool needsAttention = 3;
optional string details = 4;
optional HelpInfo helpInfo = 5;
}
// Add a new log branch to an existing log
message AddLogBranch {
required uint32 parentLogHandle = 1;
required uint32 indexInParent = 2;
required LogData logData = 3;
}
// Add a log entry to a log
message AddLogEntry {
required uint32 logHandle = 1;
required uint32 indexInLog = 2;
required LogData logData = 3;
}
// Disconnect the given log (i.e. process for which information was
// being logged is dead)
message DisconnectLog {
required uint32 logHandle = 1;
}
message Initialize {
optional string clientId = 1;
repeated string startupURLs = 2;
}
optional RequestType requestType = 1;
optional CapabilityExchange capabilityExchange = 2;
optional AddLog addLog = 3;
optional AddLogBranch addLogBranch = 4;
optional AddLogEntry addLogEntry = 5;
optional DisconnectLog disconnectLog = 6;
optional Initialize initialize = 7;
}
// The root type for all requests for the DevModeService
message DevModeRequest {
// The different types of requests for the DevModeService
enum RequestType {
CAPABILITY_EXCHANGE = 0;
RESTART_WEB_SERVER = 1;
}
// Request the capabilities of the DevModeService. No additional
// information is needed at this time.
message CapabilityExchange {
}
// Restart the web server. No additional information is needed at this time.
message RestartWebServer {
}
optional RequestType requestType = 1;
optional CapabilityExchange capabilityExchange = 2;
optional RestartWebServer restartWebServer = 3;
}
optional ServiceType serviceType = 1;
optional ViewerRequest viewerRequest = 2;
optional DevModeRequest devModeRequest = 3;
}
// A response message for a request. This is the root type for all response
// messages.
message Response {
// The root type for all response messages from the ViewerService
message ViewerResponse {
// The different types of response messages that can come from the
// ViewerService
enum ResponseType {
CAPABILITY_EXCHANGE = 0;
ADD_LOG = 1;
ADD_LOG_BRANCH = 2;
}
// Response for the capabilities of the ViewerService
message CapabilityExchange {
message Capability {
optional Message.Request.ViewerRequest.RequestType capability = 1;
}
repeated Capability capabilities = 2;
}
// Response to an AddLog request
message AddLog {
required uint32 logHandle = 1;
}
// Response to an AddLogBranch request
message AddLogBranch {
required uint32 logHandle = 1;
}
optional ResponseType responseType = 1;
optional CapabilityExchange capabilityExchange = 2;
optional AddLog addLog = 3;
optional AddLogBranch addLogBranch = 4;
}
// The root type for all response messages from the DevModeService
message DevModeResponse {
// The different types of response messages from the DevModeService
enum ResponseType {
CAPABILITY_EXCHANGE = 0;
RESTART_WEB_SERVER = 1;
}
// Response for the capabilities of the DevModeService
message CapabilityExchange {
message Capability {
optional Message.Request.DevModeRequest.RequestType capability = 1;
}
repeated Capability capabilities = 2;
}
// Response to a RestartWebServer request. Right now, there is no information
// that needs to be passed back
message RestartWebServer {
}
optional ResponseType responseType = 1;
optional CapabilityExchange capabilityExchange = 2;
optional RestartWebServer restartWebServer = 3;
}
optional ViewerResponse viewerResponse = 1;
optional DevModeResponse devModeResponse = 2;
}
message Failure {
optional string message = 1;
optional string stackTrace = 2;
}
// In the first release, we'll ignore this field. In the future,
// we can make use of it to detect protocol incompatibilities
optional string protocolVersion = 1;
optional MessageType messageType = 2;
required uint32 messageId = 3;
optional Request request = 4;
optional Response response = 5;
optional Failure failure = 6;
}