mirror of
https://github.com/luxfi/dex.git
synced 2026-09-24 00:26:31 +00:00
Default build pulls zero gRPC code; rebuild with `-tags=grpc` to opt
into gRPC.
Decomplected via a `grpcBackend` interface in `sdk/go/client` and a
`grpcSubClient` interface in `client/go`. The default build wires a
no-op backend (`*_nogrpc.go`); the `grpc` build wires the real
protobuf-backed client (`*_grpc.go`). Public methods stay the same in
both builds — the gRPC fast path is preferred when wired, else
JSON-RPC / WebSocket.
Files gated:
- pkg/grpc/pb/lxdex_grpc.pb.go (//go:build grpc)
- pkg/proto/engine/proto/lx_engine_grpc.pb.go (//go:build grpc)
Files refactored:
- sdk/go/client.go: //go:build grpc with stub in client_nogrpc.go
- sdk/go/client/client.go: gRPC removed from method bodies; backed by
the grpcBackend interface (grpc_backend{,_grpc,_nogrpc}.go)
- client/go/main.go: GrpcClient + ConnectGrpc moved to grpc.go
(//go:build grpc); nogrpc.go stubs ConnectGrpc with a clear error
Verification:
- go build ./... (default) clean across sdk/go, client/go, top-level
- go build -tags=grpc ./... clean across all three modules
- go test ./... and go test -tags=grpc ./... green
- go list -deps shows 0 google.golang.org/grpc packages in default
builds of sdk/go/client and client/go; 62 packages with -tags=grpc
READMEs in sdk/go and client/go document the build-tag opt-in.
34 lines
1.2 KiB
Go
34 lines
1.2 KiB
Go
//go:build !grpc
|
|
|
|
package client
|
|
|
|
import "context"
|
|
|
|
// newGRPCBackend returns the no-op backend used in the default build.
|
|
func newGRPCBackend() grpcBackend { return noopGRPC{} }
|
|
|
|
// noopGRPC is the default-build backend. Every method reports
|
|
// "not handled" so the JSON-RPC fallback runs. ConnectGRPC and
|
|
// StreamOrderBook return ErrGRPCNotBuilt to make the missing
|
|
// capability explicit.
|
|
type noopGRPC struct{}
|
|
|
|
func (noopGRPC) connect(ctx context.Context, addr string) error { return ErrGRPCNotBuilt }
|
|
func (noopGRPC) close() error { return nil }
|
|
|
|
func (noopGRPC) placeOrder(ctx context.Context, order *Order) (*OrderResponse, bool, error) {
|
|
return nil, false, nil
|
|
}
|
|
func (noopGRPC) cancelOrder(ctx context.Context, orderID uint64) (bool, error) {
|
|
return false, nil
|
|
}
|
|
func (noopGRPC) getOrderBook(ctx context.Context, symbol string, depth int32) (*OrderBook, bool, error) {
|
|
return nil, false, nil
|
|
}
|
|
func (noopGRPC) getTrades(ctx context.Context, symbol string, limit int32) ([]*Trade, bool, error) {
|
|
return nil, false, nil
|
|
}
|
|
func (noopGRPC) streamOrderBook(ctx context.Context, symbol string) (<-chan *OrderBook, error) {
|
|
return nil, ErrGRPCNotBuilt
|
|
}
|