| /* |
| * Copyright 2016 The Kythe Authors. All rights reserved. |
| * |
| * 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 kythe.proto; |
| |
| option go_package = "storage_service_go_proto"; |
| option java_package = "com.google.devtools.kythe.proto"; |
| |
| import "kythe/proto/storage.proto"; |
| |
| // Persistent storage server for Kythe analysis data. |
| // See: http://www.kythe.io/docs/kythe-storage.html |
| service GraphStore { |
| // Read responds with all Entry messages that match the given ReadRequest. |
| // The Read operation should be implemented with time complexity proportional |
| // to the size of the return set. |
| rpc Read(ReadRequest) returns (stream Entry) {} |
| |
| // Scan responds with all Entry messages matching the given ScanRequest. If a |
| // ScanRequest field is empty, any entry value for that field matches and will |
| // be returned. Scan is similar to Read, but with no time complexity |
| // restrictions. |
| rpc Scan(ScanRequest) returns (stream Entry) {} |
| |
| // Write atomically inserts or updates a collection of entries into the store. |
| // Each update is a tuple of the form (kind, target, fact, value). For each |
| // such update, an entry (source, kind, target, fact, value) is written into |
| // the store, replacing any existing entry (source, kind, target, fact, |
| // value') that may exist. Note that this operation cannot delete any data |
| // from the store; entries are only ever inserted or updated. Apart from |
| // acting atomically, no other constraints are placed on the implementation. |
| rpc Write(WriteRequest) returns (WriteReply) {} |
| } |
| |
| // ShardedGraphStores can be arbitrarily sharded for parallel processing. |
| // Depending on the implementation, these methods may not return consistent |
| // results when the store is being written to. Shards are indexed from 0. |
| service ShardedGraphStore { |
| // Count returns the number of entries in the given shard. |
| rpc Count(CountRequest) returns (CountReply) {} |
| |
| // Shard responds with each Entry in the given shard. |
| rpc Shard(ShardRequest) returns (stream Entry) {} |
| } |