github.com/ydb-platform/ydb-go-sdk/v3@v3.57.0/internal/grpcwrapper/rawtopic/client.go (about) 1 package rawtopic 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/ydb-platform/ydb-go-genproto/Ydb_Topic_V1" 8 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopicreader" 10 "github.com/ydb-platform/ydb-go-sdk/v3/internal/grpcwrapper/rawtopic/rawtopicwriter" 11 "github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors" 12 ) 13 14 type Client struct { 15 service Ydb_Topic_V1.TopicServiceClient 16 } 17 18 func NewClient(service Ydb_Topic_V1.TopicServiceClient) Client { 19 return Client{service: service} 20 } 21 22 func (c *Client) AlterTopic(ctx context.Context, req *AlterTopicRequest) (res AlterTopicResult, err error) { 23 resp, err := c.service.AlterTopic(ctx, req.ToProto()) 24 if err != nil { 25 return res, xerrors.WithStackTrace(fmt.Errorf("ydb: alter topic grpc failed: %w", err)) 26 } 27 err = res.FromProto(resp) 28 29 return res, err 30 } 31 32 func (c *Client) CreateTopic( 33 ctx context.Context, 34 req *CreateTopicRequest, 35 ) (res CreateTopicResult, err error) { 36 resp, err := c.service.CreateTopic(ctx, req.ToProto()) 37 if err != nil { 38 return res, xerrors.WithStackTrace(fmt.Errorf("ydb: create topic grpc failed: %w", err)) 39 } 40 err = res.FromProto(resp) 41 42 return res, err 43 } 44 45 func (c *Client) DescribeTopic(ctx context.Context, req DescribeTopicRequest) (res DescribeTopicResult, err error) { 46 resp, err := c.service.DescribeTopic(ctx, req.ToProto()) 47 if err != nil { 48 return DescribeTopicResult{}, xerrors.WithStackTrace(xerrors.Wrap( 49 fmt.Errorf("ydb: describe topic grpc failed: %w", err), 50 )) 51 } 52 err = res.FromProto(resp) 53 54 return res, err 55 } 56 57 func (c *Client) DropTopic( 58 ctx context.Context, 59 req DropTopicRequest, 60 ) (res DropTopicResult, err error) { 61 resp, err := c.service.DropTopic(ctx, req.ToProto()) 62 if err != nil { 63 return res, xerrors.WithStackTrace(fmt.Errorf("ydb: drop topic grpc failed: %w", err)) 64 } 65 err = res.FromProto(resp) 66 67 return res, err 68 } 69 70 func (c *Client) StreamRead(ctxStreamLifeTime context.Context) (rawtopicreader.StreamReader, error) { 71 protoResp, err := c.service.StreamRead(ctxStreamLifeTime) 72 if err != nil { 73 return rawtopicreader.StreamReader{}, xerrors.WithStackTrace( 74 xerrors.Wrap( 75 fmt.Errorf("ydb: failed start grpc topic stream read: %w", err), 76 ), 77 ) 78 } 79 80 return rawtopicreader.StreamReader{Stream: protoResp}, nil 81 } 82 83 func (c *Client) StreamWrite(ctxStreamLifeTime context.Context) (*rawtopicwriter.StreamWriter, error) { 84 protoResp, err := c.service.StreamWrite(ctxStreamLifeTime) 85 if err != nil { 86 return nil, xerrors.WithStackTrace( 87 xerrors.Wrap( 88 fmt.Errorf("ydb: failed start grpc topic stream write: %w", err), 89 ), 90 ) 91 } 92 93 return &rawtopicwriter.StreamWriter{Stream: protoResp}, nil 94 }