/* * Copyright 2022 The Dragonfly Authors * * 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"; package dfdaemon.v2; import "pkg/apis/common/v2/common.proto"; import "google/protobuf/empty.proto"; import "validate/validate.proto"; option go_package = "d7y.io/api/v2/pkg/apis/dfdaemon/v2;dfdaemon"; // DownloadTaskRequest represents request of DownloadTask. message DownloadTaskRequest { // Download information. common.v2.Download download = 1 [(validate.rules).message.required = true]; } // DownloadTaskStartedResponse represents task started response of DownloadTaskResponse. message DownloadTaskStartedResponse { // Task content length. uint64 content_length = 1; } // DownloadPieceFinishedResponse represents piece finished response of DownloadTaskResponse. message DownloadPieceFinishedResponse { // Piece info. common.v2.Piece piece = 1 [(validate.rules).message.required = true]; } // DownloadTaskResponse represents response of DownloadTask. message DownloadTaskResponse { // Host id. string host_id = 1 [(validate.rules).string.min_len = 1]; // Task id. string task_id = 2 [(validate.rules).string.min_len = 1]; // Peer id. string peer_id = 3 [(validate.rules).string.min_len = 1]; oneof response { option (validate.required) = true; DownloadTaskStartedResponse download_task_started_response = 4; DownloadPieceFinishedResponse download_piece_finished_response = 5; } } // SyncPiecesRequest represents request of SyncPieces. message SyncPiecesRequest { // Task id. string task_id = 1 [(validate.rules).string.min_len = 1]; // Interested piece numbers. repeated uint32 interested_piece_numbers = 2 [(validate.rules).repeated = {min_items: 1}]; } // SyncPiecesResponse represents response of SyncPieces. message SyncPiecesResponse { // Exist piece number. uint32 piece_number = 1; } // DownloadPieceRequest represents request of DownloadPiece. message DownloadPieceRequest{ // Task id. string task_id = 1 [(validate.rules).string.min_len = 1]; // Piece number. uint32 piece_number = 2; } // DownloadPieceResponse represents response of DownloadPieces. message DownloadPieceResponse { // Piece information. common.v2.Piece piece = 1 [(validate.rules).message.required = true]; } // DfdaemonUpload represents dfdaemon upload service. service DfdaemonUpload { // DownloadTask downloads task back-to-source. rpc DownloadTask(DownloadTaskRequest) returns(stream DownloadTaskResponse); // SyncPieces syncs piece metadatas from remote peer. rpc SyncPieces(SyncPiecesRequest) returns(stream SyncPiecesResponse); // DownloadPiece downloads piece from the remote peer. rpc DownloadPiece(DownloadPieceRequest)returns(DownloadPieceResponse); } // UploadTaskRequest represents request of UploadTask. message UploadTaskRequest { // Task metadata. common.v2.Task task = 1 [(validate.rules).message.required = true]; } // StatTaskRequest represents request of StatTask. message StatTaskRequest { // Task id. string task_id = 1 [(validate.rules).string.min_len = 1]; } // DeleteTaskRequest represents request of DeleteTask. message DeleteTaskRequest { // Task id. string task_id = 1 [(validate.rules).string.min_len = 1]; } // DfdaemonDownload represents dfdaemon download service. service DfdaemonDownload { // DownloadTask downloads task back-to-source. rpc DownloadTask(DownloadTaskRequest) returns(stream DownloadTaskResponse); // UploadTask uploads task to p2p network. rpc UploadTask(UploadTaskRequest) returns(google.protobuf.Empty); // StatTask stats task information. rpc StatTask(StatTaskRequest) returns(common.v2.Task); // DeleteTask deletes task from p2p network. rpc DeleteTask(DeleteTaskRequest) returns(google.protobuf.Empty); }