Skip to content

Commit dcab3a9

Browse files
committed
chore: add .NET gRPC wrapper
Adds a gRPC wrapper for .NET. This wrapper uses the gRPC API to connect to SpannerLib. The gRPC channel uses a Unix domain socket.
1 parent ff10e22 commit dcab3a9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+7749
-481
lines changed

.github/workflows/spanner-lib-tests.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ jobs:
9797
go-version: ${{ matrix.go-version }}
9898
- name: Checkout code
9999
uses: actions/checkout@v4
100+
with:
101+
submodules: 'true'
100102
- name: Build shared library
101103
working-directory: spannerlib/shared
102104
run: go build -o spannerlib.so -buildmode=c-shared shared_lib.go
@@ -124,6 +126,34 @@ jobs:
124126
fi
125127
working-directory: spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-native
126128
shell: bash
129+
- name: Build gRPC server
130+
working-directory: spannerlib/grpc-server
131+
run: |
132+
go build -o grpc_server server.go
133+
chmod +x grpc_server
134+
- name: Copy gRPC server to .NET wrapper
135+
working-directory: spannerlib
136+
run: |
137+
mkdir -p wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any
138+
if [ "$RUNNER_OS" == "Windows" ]; then
139+
cp grpc-server/grpc_server wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any/grpc_server.exe
140+
else
141+
cp grpc-server/grpc_server wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any/grpc_server
142+
fi
143+
shell: bash
144+
- name: Build .NET gRPC server package
145+
run: dotnet pack
146+
working-directory: spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server
147+
shell: bash
148+
- name: Add .NET package source
149+
run: |
150+
if [ "$RUNNER_OS" == "Windows" ]; then
151+
dotnet nuget add source ${GITHUB_WORKSPACE}"\spannerlib\wrappers\spannerlib-dotnet\spannerlib-dotnet-grpc-server\bin\Release" --name local-grpc-server
152+
else
153+
dotnet nuget add source "$PWD"/bin/Release --name local-grpc-server
154+
fi
155+
working-directory: spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server
156+
shell: bash
127157
- name: Restore dependencies
128158
run: dotnet restore
129159
working-directory: spannerlib/wrappers/spannerlib-dotnet
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
go build -o grpc_server server.go
2+
chmod +x grpc_server
3+
cp grpc_server ../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc/binaries/any/grpc_server
4+
cp grpc_server ../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc/binaries/osx-arm64/grpc_server
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
go build -o grpc_server server.go
22
chmod +x grpc_server
3+
mkdir -p ../wrappers/spannerlib-java/src/main/resources/darwin-aarch64
34
cp grpc_server ../wrappers/spannerlib-java/src/main/resources/darwin-aarch64/grpc_server

spannerlib/grpc-server/build-protos.sh

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
PATH="${PATH}:${HOME}/go/bin"
2-
rm -rf googleapis/google/spannerlib || true
3-
cp -r google/spannerlib googleapis/google/spannerlib
2+
ln -sf "${PWD}"/google/spannerlib googleapis/google/spannerlib
43
cd googleapis || exit 1
54
protoc \
65
--go_out=../ \
@@ -14,5 +13,13 @@ protoc \
1413
--java-grpc_out=../../wrappers/spannerlib-java/src/main/java/ \
1514
--java-grpc_opt=paths=source_relative \
1615
google/spannerlib/v1/spannerlib.proto
16+
protoc \
17+
--csharp_out=../../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-v1/ \
18+
--plugin=protoc-gen-csharp_grpc=/Users/loite/.nuget/packages/grpc.tools/2.72.0/tools/macosx_x64/grpc_csharp_plugin \
19+
--csharp_grpc_out=../../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-v1/ \
20+
--csharp_opt=file_extension=.g.cs \
21+
--csharp_grpc_opt=no_server \
22+
--proto_path=. \
23+
google/spannerlib/v1/spannerlib.proto
1724
cd .. || exit 1
18-
rm -rf googleapis/google/spannerlib
25+
rm googleapis/google/spannerlib
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/Users/loite/GolandProjects/go-sql-spanner/spannerlib/grpc-server/google/spannerlib

0 commit comments

Comments
 (0)