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.
syntax = "proto3";
import "context.proto";
Alberto Gonzalez Barneo
committed
// Define Empty message if you don't want to use google.protobuf.Empty.
message Empty {}
Alberto Gonzalez Barneo
committed
// Enum representing possible states of a QKD application.
enum QKDAppStatusEnum {
QKDAPPSTATUS_ON = 0;
QKDAPPSTATUS_DISCONNECTED = 1;
QKDAPPSTATUS_OUT_OF_TIME = 2;
QKDAPPSTATUS_ZOMBIE = 3;
}
Alberto Gonzalez Barneo
committed
// Enum representing QKD application types.
enum QKDAppTypesEnum {
QKDAPPTYPES_INTERNAL = 0;
QKDAPPTYPES_CLIENT = 1;
}
Alberto Gonzalez Barneo
committed
// Message representing a QKDL (Quantum Key Distribution Link) identifier.
message QKDLId {
context.Uuid qkdl_uuid = 1;
}
Alberto Gonzalez Barneo
committed
// 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)
}
Alberto Gonzalez Barneo
committed
// 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;
Alberto Gonzalez Barneo
committed
QoS qos = 9; // Include QoS in the App message
Alberto Gonzalez Barneo
committed
// Message representing an identifier for an app.
message AppId {
context.ContextId context_id = 1;
context.Uuid app_uuid = 2;
}
Alberto Gonzalez Barneo
committed
// Service definition for AppService, including app registration and listing.
service AppService {
rpc RegisterApp(App) returns (context.Empty) {}
Alberto Gonzalez Barneo
committed
rpc ListApps(context.ContextId) returns (AppList) {}
rpc GetApp(AppId) returns (App) {}
rpc DeleteApp (AppId) returns (Empty) {} // Use locally defined Empty
}
Alberto Gonzalez Barneo
committed
// Message representing a list of apps.
message AppList {
repeated App apps = 1;
}