File: compilation_caching_cas.proto

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (136 lines) | stat: -rw-r--r-- 3,387 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//===--- compilation_caching_cas.proto - CAS service definition -----------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.apple.dt.compilation_cache_service";
option java_outer_classname = "CompilationCachingProto";
option objc_class_prefix = "CCS";

package compilation_cache_service.cas.v1;

// MARK: - Data types
message CASDataID {
  bytes id = 1;
}

// `CASObject` and `CASBlob` should be wire compatible.
message CASObject {
  CASBytes blob = 1;
  repeated CASDataID references = 2;
}

// `CASObject` and `CASBlob` should be wire compatible.
message CASBlob {
    CASBytes blob = 1;
}

message CASBytes {
  oneof contents {
    bytes data = 1;
    string file_path = 2;
  }
}

// MARK: - Service interface

// Interface exported by the service.
service CASDBService {
  rpc Get(CASGetRequest) returns (CASGetResponse) {}
  rpc Put(CASPutRequest) returns (CASPutResponse) {}

  rpc Load(CASLoadRequest) returns (CASLoadResponse) {}
  rpc Save(CASSaveRequest) returns (CASSaveResponse) {}
}

message ResponseError { string description = 1; }

// MARK: - Service request/response types

// MARK: Put
message CASPutRequest {
  CASObject data = 1;
}

message CASPutResponse {
  oneof contents {
    ResponseError error = 1;
    CASDataID cas_id = 2;
  }
}

// MARK: Get
message CASGetRequest {
  CASDataID cas_id = 1;
  // If set, the client asks for the service to write the blob part to disk, with a
  // file path of the service's choosing.
  //
  // However this is not a hard requirement, the service can still choose to
  // return the blob back as `bytes`. The client should always check whether
  // the blob came back as `bytes` or as a file on disk.
  //
  // If the service writes the blob to a file, it should have the right
  // access for the client to be able to move it to a different path.
  bool write_to_disk = 2;
}

message CASGetResponse {
  enum Outcome {
    ERROR = 0; // if unset, we'll get error

    OBJECT_NOT_FOUND = 1;
    SUCCESS = 2;
  }
  Outcome outcome = 1;
  oneof contents {
    ResponseError error = 2;
    CASObject data = 3;
  }
}

// MARK: Save
message CASSaveRequest {
  CASBlob data = 1;
}

message CASSaveResponse {
  oneof contents {
    ResponseError error = 1;
    CASDataID cas_id = 2;
  }
}

// MARK: Load
message CASLoadRequest {
  CASDataID cas_id = 1;
  // If set, the client asks for the service to write the blob part to disk, with a
  // file path of the service's choosing.
  //
  // However this is not a hard requirement, the service can still choose to
  // return the blob back as `bytes`. The client should always check whether
  // the blob came back as `bytes` or as a file on disk.
  //
  // If the service writes the blob to a file, it should have the right
  // access for the client to be able to move it to a different path.
  bool write_to_disk = 2;
}

message CASLoadResponse {
  enum Outcome {
    ERROR = 0; // if unset, we'll get error

    OBJECT_NOT_FOUND = 1;
    SUCCESS = 2;
  }
  Outcome outcome = 1;
  oneof contents {
    ResponseError error = 2;
    CASBlob data = 3;
  }
}