blob: df4ea15d2d0679bd356e5d709bc215e3a4fc820f [file] [log] [blame]
syntax = "proto3";
package cast.web;
option optimize_for = LITE_RUNTIME;
message Message {
oneof message_type {
MessageRequest request = 1;
MessageResponse response = 2;
MessagePortStatus status = 3;
}
MessageChannelDescriptor channel = 4;
}
message MessageChannelDescriptor {
uint32 channel_id = 1;
}
message MessageRequest {
string data = 1;
repeated MessagePortDescriptor ports = 2;
}
message MessageResponse {
bool result = 1;
}
// MessagePortDescriptor is used to transfer ownership of a port across the
// MessageChannel. After port transfer, Messages may be sent to and from the
// port by using same |channel|, which must be unique to each entangled
// port pair. Pairs from Cast Core start with |channel_id| of 0x80000000 and
// increment by one for each pair; pairs generated by a runtime should start
// at 0x0 and increment by one to avoid collisions.
message MessagePortDescriptor {
MessageChannelDescriptor channel = 1;
MessagePortStatus peer_status = 2;
uint32 sequence_number = 3;
}
message MessagePortStatus {
enum Status {
OK = 0;
ERROR = 1;
STARTED = 2;
}
Status status = 1;
}