syntax = "proto3";
option java_package = "org.onosproject.grpc.net.device";

import "models/Device.proto";
import "models/Port.proto";

package Device;

message DeviceConnected {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  DeviceDescription device_description = 2;
}

message DeviceDisconnected {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
}

message UpdatePorts {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  repeated Port.PortDescription port_descriptions= 2;
}

message PortStatusChanged {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  Port.PortDescription port_description= 2;
}

message ReceivedRoleReply {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  MastershipRole requested = 2;
  MastershipRole response = 3;
}

message UpdatePortStatistics {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  repeated Port.PortStatistics port_statistics = 2;
}

message RegisterProvider {
  // DeviceProvider's ProviderId scheme
  string provider_scheme = 1;
}

message DeviceProviderServiceMsg {
  oneof method {
    DeviceConnected device_connected= 1;
    DeviceDisconnected device_disconnected = 2;
    UpdatePorts update_ports= 3;
    PortStatusChanged port_status_changed = 4;
    ReceivedRoleReply received_role_reply = 5;
    UpdatePortStatistics update_port_statistics = 6;

    // This message is for return value of DeviceProvider#isReachable
    IsReachableResponse is_reachable_response = 7;

    // This MUST be the 1st message over the stream
    RegisterProvider register_provider = 8;
  }
}

message TriggerProbe {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
}

message RoleChanged {
  // DeviceID as String DeviceId#toString
  string device_id = 1;
  MastershipRole new_role = 2;
}

message IsReachableRequest {
  int32 xid = 1;
  // DeviceID as String DeviceId#toString
  string device_id = 2;
}

message IsReachableResponse {
  int32 xid = 1;
  bool is_reachable = 2;
}

message DeviceProviderMsg {
  oneof method {
    TriggerProbe trigger_probe = 1;
    RoleChanged role_changed = 2;
    IsReachableRequest is_reachable_request= 3;
  }
}

service DeviceProviderRegistryRpc {
  rpc Register(stream DeviceProviderServiceMsg) returns (stream DeviceProviderMsg);
}
