Skip to content

Commit d2c7751

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 d2c7751

Some content is hidden

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

43 files changed

+3032
-480
lines changed

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

Lines changed: 34 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,10 +126,42 @@ 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
130160
shell: bash
161+
- name: Create proto symlinks
162+
run: ./create-symlinks.sh
163+
working-directory: spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-impl
164+
shell: bash
131165
- name: Build
132166
run: dotnet build --no-restore
133167
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: 2 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=../ \
@@ -15,4 +14,4 @@ protoc \
1514
--java-grpc_opt=paths=source_relative \
1615
google/spannerlib/v1/spannerlib.proto
1716
cd .. || exit 1
18-
rm -rf googleapis/google/spannerlib
17+
rm googleapis/google/spannerlib

0 commit comments

Comments
 (0)