Skip to content
Snippets Groups Projects
qkd_app.proto 2.44 KiB
Newer Older
// Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
//
// 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 qkd_app;
// Define Empty message if you don't want to use google.protobuf.Empty.
message Empty {}
// Enum representing possible states of a QKD application.
enum QKDAppStatusEnum {
  QKDAPPSTATUS_ON = 0;
  QKDAPPSTATUS_DISCONNECTED = 1;
  QKDAPPSTATUS_OUT_OF_TIME = 2;
  QKDAPPSTATUS_ZOMBIE = 3;
}

// Enum representing QKD application types.
enum QKDAppTypesEnum {
  QKDAPPTYPES_INTERNAL = 0;
  QKDAPPTYPES_CLIENT = 1;
}

// Message representing a QKDL (Quantum Key Distribution Link) identifier.
message QKDLId {
  context.Uuid qkdl_uuid = 1;
}

// Define QoS parameters for QKD applications
message QoS {
  uint32 max_bandwidth = 1; // Maximum bandwidth (in bits per second)
  uint32 min_bandwidth = 2; // Minimum bandwidth (optional)
  uint32 jitter = 3;        // Maximum jitter (in milliseconds)
  uint32 ttl = 4;           // Time-to-live (in seconds)
}
// Main message representing a QKD application with all required fields.
message App {
  AppId app_id = 1;
  QKDAppStatusEnum app_status = 2;
  QKDAppTypesEnum app_type = 3;
  string server_app_id = 4;
  repeated string client_app_id = 5;
  repeated QKDLId backing_qkdl_id = 6;
  context.DeviceId local_device_id = 7;
  context.DeviceId remote_device_id = 8;
  QoS qos = 9; // Include QoS in the App message
// Message representing an identifier for an app.
message AppId {
  context.ContextId context_id = 1;
  context.Uuid app_uuid = 2;
}

// Service definition for AppService, including app registration and listing.
service AppService {
  rpc RegisterApp(App) returns (context.Empty) {}
  rpc ListApps(context.ContextId) returns (AppList) {}
  rpc GetApp(AppId) returns (App) {} 
  rpc DeleteApp (AppId) returns (Empty) {} // Use locally defined Empty
}
// Message representing a list of apps.
message AppList {