2023-03-18 22:34:19 +01:00
// SPDX-License-Identifier: MIT
// Copyright © 2022 The Tvix Authors
2022-11-19 21:17:24 +00:00
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
2024-12-31 12:05:05 +03:00
// - protoc-gen-go-grpc v1.5.1
2022-11-19 21:17:24 +00:00
// - protoc (unknown)
2023-09-21 22:32:44 +03:00
// source: tvix/castore/protos/rpc_blobstore.proto
2022-11-19 21:17:24 +00:00
2023-09-21 22:32:44 +03:00
package castorev1
2022-11-19 21:17:24 +00:00
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
2024-12-31 12:05:05 +03:00
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc . SupportPackageIsVersion9
2022-11-19 21:17:24 +00:00
2023-03-18 22:34:19 +01:00
const (
2023-09-21 22:32:44 +03:00
BlobService_Stat_FullMethodName = "/tvix.castore.v1.BlobService/Stat"
BlobService_Read_FullMethodName = "/tvix.castore.v1.BlobService/Read"
BlobService_Put_FullMethodName = "/tvix.castore.v1.BlobService/Put"
2023-03-18 22:34:19 +01:00
)
2022-11-19 21:17:24 +00:00
// BlobServiceClient is the client API for BlobService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
2024-12-31 12:05:05 +03:00
//
// BlobService allows reading (or uploading) content-addressed blobs of data.
// BLAKE3 is used as a hashing function for the data. Uploading a blob will
// return the BLAKE3 digest of it, and that's the identifier used to Read/Stat
// them too.
2022-11-19 21:17:24 +00:00
type BlobServiceClient interface {
2023-11-05 10:45:08 +02:00
// Stat can be used to check for the existence of a blob, as well as
// gathering more data about it, like more granular chunking information
// or baos.
// Server implementations are not required to provide more granular chunking
2023-12-21 17:38:40 +02:00
// information, especially if the digest specified in `StatBlobRequest` is
2023-11-05 10:45:08 +02:00
// already a chunk of a blob.
Stat ( ctx context . Context , in * StatBlobRequest , opts ... grpc . CallOption ) ( * StatBlobResponse , error )
// Read allows reading (all) data of a blob/chunk by the BLAKE3 digest of
// its contents.
// If the backend communicated more granular chunks in the `Stat` request,
// this can also be used to read chunks.
// This request returns a stream of BlobChunk, which is just a container for
// a stream of bytes.
2023-02-03 22:53:46 +01:00
// The server may decide on whatever chunking it may seem fit as a size for
2023-11-05 10:45:08 +02:00
// the individual BlobChunk sent in the response stream, this is mostly to
// keep individual messages at a manageable size.
2024-12-31 12:05:05 +03:00
Read ( ctx context . Context , in * ReadBlobRequest , opts ... grpc . CallOption ) ( grpc . ServerStreamingClient [ BlobChunk ] , error )
2022-12-27 18:33:04 +01:00
// Put uploads a Blob, by reading a stream of bytes.
2023-02-03 22:53:46 +01:00
//
// The way the data is chunked up in individual BlobChunk messages sent in
2023-11-05 10:45:08 +02:00
// the stream has no effect on how the server ends up chunking blobs up, if
// it does at all.
2024-12-31 12:05:05 +03:00
Put ( ctx context . Context , opts ... grpc . CallOption ) ( grpc . ClientStreamingClient [ BlobChunk , PutBlobResponse ] , error )
2022-11-19 21:17:24 +00:00
}
type blobServiceClient struct {
cc grpc . ClientConnInterface
}
func NewBlobServiceClient ( cc grpc . ClientConnInterface ) BlobServiceClient {
return & blobServiceClient { cc }
}
2023-11-05 10:45:08 +02:00
func ( c * blobServiceClient ) Stat ( ctx context . Context , in * StatBlobRequest , opts ... grpc . CallOption ) ( * StatBlobResponse , error ) {
2024-12-31 12:05:05 +03:00
cOpts := append ( [ ] grpc . CallOption { grpc . StaticMethod ( ) } , opts ... )
2023-11-05 10:45:08 +02:00
out := new ( StatBlobResponse )
2024-12-31 12:05:05 +03:00
err := c . cc . Invoke ( ctx , BlobService_Stat_FullMethodName , in , out , cOpts ... )
2022-11-19 21:17:24 +00:00
if err != nil {
return nil , err
}
2022-12-27 18:33:04 +01:00
return out , nil
}
2024-12-31 12:05:05 +03:00
func ( c * blobServiceClient ) Read ( ctx context . Context , in * ReadBlobRequest , opts ... grpc . CallOption ) ( grpc . ServerStreamingClient [ BlobChunk ] , error ) {
cOpts := append ( [ ] grpc . CallOption { grpc . StaticMethod ( ) } , opts ... )
stream , err := c . cc . NewStream ( ctx , & BlobService_ServiceDesc . Streams [ 0 ] , BlobService_Read_FullMethodName , cOpts ... )
2022-12-27 18:33:04 +01:00
if err != nil {
return nil , err
}
2024-12-31 12:05:05 +03:00
x := & grpc . GenericClientStream [ ReadBlobRequest , BlobChunk ] { ClientStream : stream }
2022-12-27 18:32:07 +01:00
if err := x . ClientStream . SendMsg ( in ) ; err != nil {
return nil , err
}
if err := x . ClientStream . CloseSend ( ) ; err != nil {
return nil , err
}
return x , nil
}
2024-12-31 12:05:05 +03:00
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type BlobService_ReadClient = grpc . ServerStreamingClient [ BlobChunk ]
2022-11-19 21:17:24 +00:00
2024-12-31 12:05:05 +03:00
func ( c * blobServiceClient ) Put ( ctx context . Context , opts ... grpc . CallOption ) ( grpc . ClientStreamingClient [ BlobChunk , PutBlobResponse ] , error ) {
cOpts := append ( [ ] grpc . CallOption { grpc . StaticMethod ( ) } , opts ... )
stream , err := c . cc . NewStream ( ctx , & BlobService_ServiceDesc . Streams [ 1 ] , BlobService_Put_FullMethodName , cOpts ... )
2022-11-19 21:17:24 +00:00
if err != nil {
return nil , err
}
2024-12-31 12:05:05 +03:00
x := & grpc . GenericClientStream [ BlobChunk , PutBlobResponse ] { ClientStream : stream }
2022-12-27 18:32:07 +01:00
return x , nil
}
2024-12-31 12:05:05 +03:00
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type BlobService_PutClient = grpc . ClientStreamingClient [ BlobChunk , PutBlobResponse ]
2022-11-19 21:17:24 +00:00
// BlobServiceServer is the server API for BlobService service.
// All implementations must embed UnimplementedBlobServiceServer
2024-12-31 12:05:05 +03:00
// for forward compatibility.
//
// BlobService allows reading (or uploading) content-addressed blobs of data.
// BLAKE3 is used as a hashing function for the data. Uploading a blob will
// return the BLAKE3 digest of it, and that's the identifier used to Read/Stat
// them too.
2022-11-19 21:17:24 +00:00
type BlobServiceServer interface {
2023-11-05 10:45:08 +02:00
// Stat can be used to check for the existence of a blob, as well as
// gathering more data about it, like more granular chunking information
// or baos.
// Server implementations are not required to provide more granular chunking
2023-12-21 17:38:40 +02:00
// information, especially if the digest specified in `StatBlobRequest` is
2023-11-05 10:45:08 +02:00
// already a chunk of a blob.
Stat ( context . Context , * StatBlobRequest ) ( * StatBlobResponse , error )
// Read allows reading (all) data of a blob/chunk by the BLAKE3 digest of
// its contents.
// If the backend communicated more granular chunks in the `Stat` request,
// this can also be used to read chunks.
// This request returns a stream of BlobChunk, which is just a container for
// a stream of bytes.
2023-02-03 22:53:46 +01:00
// The server may decide on whatever chunking it may seem fit as a size for
2023-11-05 10:45:08 +02:00
// the individual BlobChunk sent in the response stream, this is mostly to
// keep individual messages at a manageable size.
2024-12-31 12:05:05 +03:00
Read ( * ReadBlobRequest , grpc . ServerStreamingServer [ BlobChunk ] ) error
2022-12-27 18:33:04 +01:00
// Put uploads a Blob, by reading a stream of bytes.
2023-02-03 22:53:46 +01:00
//
// The way the data is chunked up in individual BlobChunk messages sent in
2023-11-05 10:45:08 +02:00
// the stream has no effect on how the server ends up chunking blobs up, if
// it does at all.
2024-12-31 12:05:05 +03:00
Put ( grpc . ClientStreamingServer [ BlobChunk , PutBlobResponse ] ) error
2022-11-19 21:17:24 +00:00
mustEmbedUnimplementedBlobServiceServer ( )
}
2024-12-31 12:05:05 +03:00
// UnimplementedBlobServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedBlobServiceServer struct { }
2022-11-19 21:17:24 +00:00
2023-11-05 10:45:08 +02:00
func ( UnimplementedBlobServiceServer ) Stat ( context . Context , * StatBlobRequest ) ( * StatBlobResponse , error ) {
2022-12-27 18:33:04 +01:00
return nil , status . Errorf ( codes . Unimplemented , "method Stat not implemented" )
}
2024-12-31 12:05:05 +03:00
func ( UnimplementedBlobServiceServer ) Read ( * ReadBlobRequest , grpc . ServerStreamingServer [ BlobChunk ] ) error {
2022-12-27 18:33:04 +01:00
return status . Errorf ( codes . Unimplemented , "method Read not implemented" )
2022-11-19 21:17:24 +00:00
}
2024-12-31 12:05:05 +03:00
func ( UnimplementedBlobServiceServer ) Put ( grpc . ClientStreamingServer [ BlobChunk , PutBlobResponse ] ) error {
2022-12-27 18:32:07 +01:00
return status . Errorf ( codes . Unimplemented , "method Put not implemented" )
2022-11-19 21:17:24 +00:00
}
func ( UnimplementedBlobServiceServer ) mustEmbedUnimplementedBlobServiceServer ( ) { }
2024-12-31 12:05:05 +03:00
func ( UnimplementedBlobServiceServer ) testEmbeddedByValue ( ) { }
2022-11-19 21:17:24 +00:00
// UnsafeBlobServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to BlobServiceServer will
// result in compilation errors.
type UnsafeBlobServiceServer interface {
mustEmbedUnimplementedBlobServiceServer ( )
}
func RegisterBlobServiceServer ( s grpc . ServiceRegistrar , srv BlobServiceServer ) {
2024-12-31 12:05:05 +03:00
// If the following call pancis, it indicates UnimplementedBlobServiceServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t , ok := srv . ( interface { testEmbeddedByValue ( ) } ) ; ok {
t . testEmbeddedByValue ( )
}
2022-11-19 21:17:24 +00:00
s . RegisterService ( & BlobService_ServiceDesc , srv )
}
2022-12-27 18:33:04 +01:00
func _BlobService_Stat_Handler ( srv interface { } , ctx context . Context , dec func ( interface { } ) error , interceptor grpc . UnaryServerInterceptor ) ( interface { } , error ) {
in := new ( StatBlobRequest )
if err := dec ( in ) ; err != nil {
return nil , err
}
if interceptor == nil {
return srv . ( BlobServiceServer ) . Stat ( ctx , in )
}
info := & grpc . UnaryServerInfo {
Server : srv ,
2023-03-18 22:34:19 +01:00
FullMethod : BlobService_Stat_FullMethodName ,
2022-12-27 18:33:04 +01:00
}
handler := func ( ctx context . Context , req interface { } ) ( interface { } , error ) {
return srv . ( BlobServiceServer ) . Stat ( ctx , req . ( * StatBlobRequest ) )
}
return interceptor ( ctx , in , info , handler )
}
func _BlobService_Read_Handler ( srv interface { } , stream grpc . ServerStream ) error {
m := new ( ReadBlobRequest )
2022-12-27 18:32:07 +01:00
if err := stream . RecvMsg ( m ) ; err != nil {
return err
2022-11-19 21:17:24 +00:00
}
2024-12-31 12:05:05 +03:00
return srv . ( BlobServiceServer ) . Read ( m , & grpc . GenericServerStream [ ReadBlobRequest , BlobChunk ] { ServerStream : stream } )
2022-12-27 18:32:07 +01:00
}
2024-12-31 12:05:05 +03:00
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type BlobService_ReadServer = grpc . ServerStreamingServer [ BlobChunk ]
2022-11-19 21:17:24 +00:00
2022-12-27 18:32:07 +01:00
func _BlobService_Put_Handler ( srv interface { } , stream grpc . ServerStream ) error {
2024-12-31 12:05:05 +03:00
return srv . ( BlobServiceServer ) . Put ( & grpc . GenericServerStream [ BlobChunk , PutBlobResponse ] { ServerStream : stream } )
2022-12-27 18:32:07 +01:00
}
2024-12-31 12:05:05 +03:00
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type BlobService_PutServer = grpc . ClientStreamingServer [ BlobChunk , PutBlobResponse ]
2022-11-19 21:17:24 +00:00
// BlobService_ServiceDesc is the grpc.ServiceDesc for BlobService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var BlobService_ServiceDesc = grpc . ServiceDesc {
2023-09-21 22:32:44 +03:00
ServiceName : "tvix.castore.v1.BlobService" ,
2022-11-19 21:17:24 +00:00
HandlerType : ( * BlobServiceServer ) ( nil ) ,
2022-12-27 18:33:04 +01:00
Methods : [ ] grpc . MethodDesc {
{
MethodName : "Stat" ,
Handler : _BlobService_Stat_Handler ,
} ,
} ,
2022-12-27 18:32:07 +01:00
Streams : [ ] grpc . StreamDesc {
2022-11-19 21:17:24 +00:00
{
2022-12-27 18:33:04 +01:00
StreamName : "Read" ,
Handler : _BlobService_Read_Handler ,
2022-12-27 18:32:07 +01:00
ServerStreams : true ,
2022-11-19 21:17:24 +00:00
} ,
{
2022-12-27 18:32:07 +01:00
StreamName : "Put" ,
Handler : _BlobService_Put_Handler ,
ClientStreams : true ,
2022-11-19 21:17:24 +00:00
} ,
} ,
2023-09-21 22:32:44 +03:00
Metadata : "tvix/castore/protos/rpc_blobstore.proto" ,
2022-11-19 21:17:24 +00:00
}