diff --git a/build/Makefile b/build/Makefile index 463b49c442..6483837450 100644 --- a/build/Makefile +++ b/build/Makefile @@ -177,6 +177,7 @@ include ./includes/google-cloud.mk include ./includes/minikube.mk include ./includes/kind.mk include ./includes/website.mk +include ./includes/sdk.mk # personal includes, excluded from the git repository -include ./local-includes/*.mk @@ -220,21 +221,14 @@ push-release-chart: $(ensure-build-image) mv /tmp/agones/install/helm/agones $(agones_path)/install/.helm-$(RELEASE_VERSION)/ CHART_DIR=install/.helm-$(RELEASE_VERSION)/agones $(MAKE) push-chart -#build all the sdks -build-sdks: build-sdk-cpp - # Run all tests -test: $(ensure-build-image) test-go test-nodejs test-install-yaml site-test +test: $(ensure-build-image) test-go test-sdks test-install-yaml site-test # Run go tests test-go: $(GO_TEST) $(agones_package)/pkg/... \ $(agones_package)/sdks/... $(agones_package)/cmd/... -# Run Node.js SDK tests -test-nodejs: - docker run --rm $(common_mounts) -w $(workdir_path)/sdks/nodejs $(build_tag) npm install-test - # Runs end-to-end tests on the current configured cluster # For minikube user the minikube-test-e2e targets test-e2e: $(ensure-build-image) @@ -353,10 +347,6 @@ push-ping-image: $(ensure-build-image) build-ping-image: $(ensure-build-image) build-ping-binary build-licenses build-required-src-dist docker build $(agones_path)/cmd/ping/ --tag=$(ping_tag) $(DOCKER_BUILD_ARGS) -# Build the cpp sdk linux archive -build-sdk-cpp: $(ensure-build-image) - docker run --rm $(common_mounts) -w $(workdir_path)/sdks/cpp $(build_tag) make build install archive VERSION=$(VERSION) - # push the gameservers sidecar image push-agones-sdk-image: $(ensure-build-image) docker push $(sidecar_tag) @@ -369,13 +359,6 @@ gen-install: $(ensure-build-image) --set agones.crds.cleanupOnDelete=false \ > $(mount_path)/install/yaml/install.yaml' -# Generate the SDK gRPC server and client code -gen-gameservers-sdk-grpc: $(ensure-build-image) - docker run --rm $(common_mounts) -w $(workdir_path) $(build_tag) /root/gen-grpc-go.sh - docker run --rm $(common_mounts) -w $(workdir_path) $(build_tag) /root/gen-grpc-cpp.sh - docker run --rm $(common_mounts) -w $(workdir_path) $(build_tag) /root/gen-grpc-rust.sh - docker run --rm $(common_mounts) -w $(workdir_path) $(build_tag) /root/gen-grpc-nodejs.sh - # Generate the client for our CustomResourceDefinition gen-crd-client: $(ensure-build-image) docker run --rm $(common_mounts) -w $(workdir_path) $(build_tag) /root/gen-crd-client.sh diff --git a/build/build-image/Dockerfile b/build/build-image/Dockerfile index 6e180218ec..795afc3481 100644 --- a/build/build-image/Dockerfile +++ b/build/build-image/Dockerfile @@ -12,40 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -# ForceUpdate 6 -- change here if you need to force a rebuild +# ForceUpdate 7 -- change here if you need to force a rebuild -# compiling proto + grpc takes an exceptionally long time -# so we'll use a base from `base` - which is manually built using the below tag. -FROM gcr.io/agones-images/grpc-cxx:1.16.1 +FROM debian:stretch RUN apt-get update && \ - apt-get install -y wget psmisc rsync make python bash-completion zip nano jq graphviz \ - gettext-base plantuml && \ + apt-get install -y build-essential gnupg curl git wget psmisc rsync make python bash-completion \ + zip nano jq graphviz gettext-base plantuml && \ apt-get clean -# _ -# | | __ _ _ __ __ _ _ _ __ _ __ _ ___ ___ -# | | / _` | '_ \ / _` | | | |/ _` |/ _` |/ _ \ __| -# | |___ (_| | | | | (_| | |_| | (_| | (_| | __\__ \ -# |_____\__,_|_| |_|\__, |\__,_|\__,_|\__, |\___|___/ -# |___/ |___/ - -# install rust -ENV RUSTUP_HOME=/usr/local/rustup \ - CARGO_HOME=/usr/local/cargo \ - PATH=/usr/local/cargo/bin:$PATH \ - RUST_VERSION=1.26.1 -ENV RUST_ARCH=x86_64-unknown-linux-gnu \ - RUSTUP_SHA256=c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02 -RUN wget -q https://static.rust-lang.org/rustup/archive/1.11.0/${RUST_ARCH}/rustup-init && \ - echo "${RUSTUP_SHA256} *rustup-init" | sha256sum -c - && \ - chmod +x rustup-init && \ - ./rustup-init -y --no-modify-path --default-toolchain $RUST_VERSION && \ - rm rustup-init && \ - rustup --version; \ - cargo --version; \ - rustc --version; - # install go WORKDIR /usr/local ENV GO_VERSION=1.12 @@ -83,23 +58,6 @@ RUN curl -L ${HELM_URL} > /tmp/helm.tar.gz \ && rm /tmp/helm.tar.gz && rm -rf /tmp/linux-amd64 RUN echo "source <(helm completion bash)" >> /root/.bashrc -# ____ ____ ____ _____ _ _ -# __ _| _ \| _ \ / ___| |_ _|__ ___ | (_)_ __ __ _ -# / _` | |_) | |_) | | | |/ _ \ / _ \| | | '_ \ / _` | -# | (_| | _ <| __/| |___ | | (_) | (_) | | | | | | (_| | -# \__, |_| \_\_| \____| |_|\___/ \___/|_|_|_| |_|\__, | -# |___/ |___/ - -# install protoc-gen-go 1.2.0 -RUN go get github.com/golang/protobuf/protoc-gen-go@v1.2.0 - -# install rust tooling for SDK generation -RUN cargo install protobuf-codegen --vers 2.0.2 -RUN cargo install grpcio-compiler --vers 0.3.0 - -# install go tooling for development, building and testing -RUN go get -u golang.org/x/tools/cmd/goimports - # install golang-ci linter RUN curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v1.15.0 @@ -120,7 +78,7 @@ RUN mkdir /tmp/hugo && \ mv /tmp/hugo/hugo /usr/local/bin/ && \ rm -r /tmp/hugo -RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && \ +RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && \ apt-get install -y nodejs # install API reference docs generator diff --git a/build/build-sdk-images/README.md b/build/build-sdk-images/README.md new file mode 100644 index 0000000000..9d6b8913da --- /dev/null +++ b/build/build-sdk-images/README.md @@ -0,0 +1,64 @@ +# Agones SDKs build + +As we seen before GameServers can communicate their current state back to Agones controller using a side car. This sidecar runs a GRPC server handling the communication to Agones, the GameServer connects using a SDK which a thin wrapper around GRPC client code. + +By using GRPC, adding more languages should be pretty straigthforward as it supports code generation for many of them. + +> if your language doesn't support GRPC you can still create a SDK by connecting to the HTTP GRPC gateway. + +This guide explains how to build, test and generate GRPC code for our SDKs but also how to add a new language. + +## How it works + +Our build system heavily rely on Docker and make, but that's all you need. The rest of the GRPC tooling and language specific dependencies are installed inside Docker images via Dockerfile. + +We separated each language specific tooling in their on Docker image, this way building them will be faster and easier to maintain. + +A base GRPC image with protoc is provided, every other images inherit from it via the `FROM` Dockerfile syntax. This way SDKs grpc code is generated from the same version of our SDK sidecar. + +## Targets + +We currently support 3 commands per SDK: + +- `gen` to generate GRPC required by SDKs. +- `test` to run SDKs tests. +- `build` to build SDKs binaries. + +> All commands might not be required for all SDKs. (e.g. build is only used for our cpp SDK) + +SDKs build scripts and Dockerfile are stored in a folder in this directory. + +To run tests for a single SDK use with the `SDK_FOLDER` of your choice: + +```bash +make test-sdk SDK_FOLDER=go +``` + +You can also run all SDKs tests by using `make test-sdks`. + +To generate GRPC code and build binaries you can respectively use: + +```bash +make gen-sdk-grpc SDK_FOLDER=go +make build-sdk SDK_FOLDER=go + +# for all SDKs +make gen-all-sdk-grpc +make build-sdks +``` + +## Adding support for a new language + +Makefile targets run docker containers built from Dockerfile in each folder found in this directory. This means you don't need to change our Makefile + +Simply create a new directory with the name of your SDK. Then copy our [template](./tool/template) folder content you SDK folder. + +Edit the Dockerfile to install all dependencies you need to generate, build and test your SDK. (you should not need to change the base image) + +> As explained in our [SDK documentation](https://agones.dev/site/docs/guides/client-sdks/) you have 2 options HTTP or GRPC. If you are using HTTP you don't need to use our base SDK image so feel free to use the distribution of your choice. + +Then add your steps in `build.sh`, `test.sh` and `gen.sh` script files. + +You should now be able to use your `SDK_FOLDER` with our [Makefile targets](#targets). + +Each targets will ensure that your Dockerfile is built and then run the image with a pre-defined command. The Agones code source repository is mounted in the working directory inside the container and you can also access the current Agones version via the environment variable `VERSION`. \ No newline at end of file diff --git a/build/build-sdk-images/cpp/Dockerfile b/build/build-sdk-images/cpp/Dockerfile new file mode 100644 index 0000000000..ca34b68e58 --- /dev/null +++ b/build/build-sdk-images/cpp/Dockerfile @@ -0,0 +1,40 @@ +# Copyright 2018 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ARG BASE_IMAGE=agones-build-sdk-base:latest +FROM $BASE_IMAGE + +RUN apt-get update && \ + apt-get install -y zip wget && \ + apt-get clean + +ADD https://cmake.org/files/v3.14/cmake-3.14.1-Linux-x86_64.sh /cmake-3.14.1-Linux-x86_64.sh +RUN mkdir /opt/cmake +RUN sh /cmake-3.14.1-Linux-x86_64.sh --prefix=/opt/cmake --skip-license +RUN ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake +RUN cmake --version + +WORKDIR /usr/local +ENV GO_VERSION=1.12 +ENV GO111MODULE=on +ENV GOPATH /go +RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ + tar -xzf go${GO_VERSION}.linux-amd64.tar.gz && rm go${GO_VERSION}.linux-amd64.tar.gz && mkdir -p ${GOPATH} + +WORKDIR /go/src/agones.dev/agones + +ENV PATH /usr/local/go/bin:/go/bin:$PATH + +# code generation scripts +COPY *.sh /root/ +RUN chmod +x /root/*.sh \ No newline at end of file diff --git a/build/build-sdk-images/cpp/build.sh b/build/build-sdk-images/cpp/build.sh new file mode 100644 index 0000000000..00cce48a75 --- /dev/null +++ b/build/build-sdk-images/cpp/build.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +cd ./sdks/cpp +make build install archive VERSION=$VERSION \ No newline at end of file diff --git a/build/build-image/gen-grpc-cpp.sh b/build/build-sdk-images/cpp/gen.sh similarity index 99% rename from build/build-image/gen-grpc-cpp.sh rename to build/build-sdk-images/cpp/gen.sh index 77b295b4f0..a620fd0e6b 100644 --- a/build/build-image/gen-grpc-cpp.sh +++ b/build/build-sdk-images/cpp/gen.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -x +set -ex header() { cat /go/src/agones.dev/agones/build/boilerplate.go.txt $1 >> /tmp/cpp/$1 && mv /tmp/cpp/$1 . diff --git a/build/build-sdk-images/go/Dockerfile b/build/build-sdk-images/go/Dockerfile new file mode 100644 index 0000000000..248ff2da83 --- /dev/null +++ b/build/build-sdk-images/go/Dockerfile @@ -0,0 +1,38 @@ +# Copyright 2019 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ARG BASE_IMAGE=agones-build-sdk-base:latest +FROM $BASE_IMAGE + +RUN apt-get update && \ + apt-get install -y wget jq && \ + apt-get clean + +# install go +WORKDIR /usr/local +ENV GO_VERSION=1.12 +ENV GO111MODULE=on +ENV GOPATH /go +RUN wget -q https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz && \ + tar -xzf go${GO_VERSION}.linux-amd64.tar.gz && rm go${GO_VERSION}.linux-amd64.tar.gz && mkdir -p ${GOPATH} + +ENV PATH /usr/local/go/bin:/go/bin:$PATH + +# install go-proto-gen 1.1 +RUN go get github.com/golang/protobuf/protoc-gen-go@v1.2.0 && \ + go get -u golang.org/x/tools/cmd/goimports + + +# code generation scripts +COPY *.sh /root/ +RUN chmod +x /root/*.sh \ No newline at end of file diff --git a/build/build-image/gen-grpc-go.sh b/build/build-sdk-images/go/gen.sh similarity index 99% rename from build/build-image/gen-grpc-go.sh rename to build/build-sdk-images/go/gen.sh index ae92964796..4e516ccd58 100644 --- a/build/build-image/gen-grpc-go.sh +++ b/build/build-sdk-images/go/gen.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -x +set -ex export GO111MODULE=on diff --git a/build/build-sdk-images/go/test.sh b/build/build-sdk-images/go/test.sh new file mode 100644 index 0000000000..35b9f324aa --- /dev/null +++ b/build/build-sdk-images/go/test.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex +GO111MODULE=off +cd /go/src/agones.dev/agones/ +go test -v -race ./sdks/go/ \ No newline at end of file diff --git a/build/build-sdk-images/node/Dockerfile b/build/build-sdk-images/node/Dockerfile new file mode 100644 index 0000000000..a6f3b827b3 --- /dev/null +++ b/build/build-sdk-images/node/Dockerfile @@ -0,0 +1,22 @@ +# Copyright 2019 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ARG BASE_IMAGE=agones-build-sdk-base:latest +FROM $BASE_IMAGE + +RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && \ + apt-get install -y nodejs + +# code generation scripts +COPY *.sh /root/ +RUN chmod +x /root/*.sh \ No newline at end of file diff --git a/build/build-image/gen-grpc-nodejs.sh b/build/build-sdk-images/node/gen.sh similarity index 99% rename from build/build-image/gen-grpc-nodejs.sh rename to build/build-sdk-images/node/gen.sh index 4b623172f4..266b1164c6 100644 --- a/build/build-image/gen-grpc-nodejs.sh +++ b/build/build-sdk-images/node/gen.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -x +set -ex header() { cat ./build/boilerplate.go.txt $1 >> ./tmp.js && mv ./tmp.js $1 diff --git a/build/build-sdk-images/node/test.sh b/build/build-sdk-images/node/test.sh new file mode 100644 index 0000000000..a2bf278a7d --- /dev/null +++ b/build/build-sdk-images/node/test.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex +cd ./sdks/nodejs +npm install-test \ No newline at end of file diff --git a/build/build-sdk-images/rust/Dockerfile b/build/build-sdk-images/rust/Dockerfile new file mode 100644 index 0000000000..f9f4204c57 --- /dev/null +++ b/build/build-sdk-images/rust/Dockerfile @@ -0,0 +1,43 @@ +# Copyright 2019 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ARG BASE_IMAGE=agones-build-sdk-base:latest +FROM $BASE_IMAGE + +RUN apt-get update && \ + apt-get install -y wget && \ + apt-get clean + +# install rust +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH \ + RUST_VERSION=1.26.1 +ENV RUST_ARCH=x86_64-unknown-linux-gnu \ + RUSTUP_SHA256=c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02 +RUN wget -q https://static.rust-lang.org/rustup/archive/1.11.0/${RUST_ARCH}/rustup-init && \ + echo "${RUSTUP_SHA256} *rustup-init" | sha256sum -c - && \ + chmod +x rustup-init && \ + ./rustup-init -y --no-modify-path --default-toolchain $RUST_VERSION && \ + rm rustup-init && \ + rustup --version; \ + cargo --version; \ + rustc --version; + +# install rust tooling for SDK generation +RUN cargo install protobuf-codegen --vers 2.0.2 +RUN cargo install grpcio-compiler --vers 0.3.0 + +# code generation scripts +COPY *.sh /root/ +RUN chmod +x /root/*.sh \ No newline at end of file diff --git a/build/build-image/gen-grpc-rust.sh b/build/build-sdk-images/rust/gen.sh similarity index 99% rename from build/build-image/gen-grpc-rust.sh rename to build/build-sdk-images/rust/gen.sh index 97f17b6396..f8bccbabd2 100644 --- a/build/build-image/gen-grpc-rust.sh +++ b/build/build-sdk-images/rust/gen.sh @@ -14,6 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +set -ex + googleapis=/go/src/agones.dev/agones/vendor/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis cd /go/src/agones.dev/agones diff --git a/build/build-image/base/Dockerfile b/build/build-sdk-images/tool/base/Dockerfile similarity index 78% rename from build/build-image/base/Dockerfile rename to build/build-sdk-images/tool/base/Dockerfile index e4951f5190..0dfe448c42 100644 --- a/build/build-image/base/Dockerfile +++ b/build/build-sdk-images/tool/base/Dockerfile @@ -25,9 +25,9 @@ RUN apt-get update && apt-get install -y \ automake libtool curl make g++ unzip \ && apt-get clean +ARG GRPC_RELEASE_TAG # install protobuf first, then grpc -ENV GRPC_RELEASE_TAG v1.16.1 -RUN git clone -b ${GRPC_RELEASE_TAG} --depth=5 https://github.com/grpc/grpc /var/local/git/grpc && \ +RUN git clone -b $GRPC_RELEASE_TAG --depth=5 https://github.com/grpc/grpc /var/local/git/grpc && \ cd /var/local/git/grpc && \ git submodule update --init && \ echo "--- installing protobuf ---" && \ @@ -36,4 +36,11 @@ RUN git clone -b ${GRPC_RELEASE_TAG} --depth=5 https://github.com/grpc/grpc /var make -j$(nproc) && make install && make clean && ldconfig && \ echo "--- installing grpc ---" && \ cd /var/local/git/grpc && \ - make -j$(nproc) && make install && make clean && ldconfig \ No newline at end of file + make -j$(nproc) && make install && make clean && ldconfig + +WORKDIR /go/src/agones.dev/agones + +# code generation scripts +COPY entrypoint.sh /root/ +RUN chmod +x /root/entrypoint.sh +ENTRYPOINT [ "/root/entrypoint.sh" ] \ No newline at end of file diff --git a/build/build-sdk-images/tool/base/entrypoint.sh b/build/build-sdk-images/tool/base/entrypoint.sh new file mode 100644 index 0000000000..71bcb39d00 --- /dev/null +++ b/build/build-sdk-images/tool/base/entrypoint.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex +/root/$1.sh \ No newline at end of file diff --git a/build/build-sdk-images/tool/template/Dockerfile b/build/build-sdk-images/tool/template/Dockerfile new file mode 100644 index 0000000000..d107196b51 --- /dev/null +++ b/build/build-sdk-images/tool/template/Dockerfile @@ -0,0 +1,23 @@ +# Copyright 2019 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +ARG BASE_IMAGE=agones-build-sdk-base:latest +FROM $BASE_IMAGE + +# Add installation step required to generate your SDK. +# This should contains tooling required to generate GRPC code, build (if distribution is required) +# and test your integration. + +# code generation scripts +COPY *.sh /root/ +RUN chmod +x /root/*.sh \ No newline at end of file diff --git a/build/build-sdk-images/tool/template/build.sh b/build/build-sdk-images/tool/template/build.sh new file mode 100644 index 0000000000..3193359ef5 --- /dev/null +++ b/build/build-sdk-images/tool/template/build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# Add steps required to build artefacts for you Agones SDK. \ No newline at end of file diff --git a/build/build-sdk-images/tool/template/gen.sh b/build/build-sdk-images/tool/template/gen.sh new file mode 100644 index 0000000000..49f0d9ba2f --- /dev/null +++ b/build/build-sdk-images/tool/template/gen.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# Add steps required to generate your language specific SDK GRPC code. \ No newline at end of file diff --git a/build/build-sdk-images/tool/template/test.sh b/build/build-sdk-images/tool/template/test.sh new file mode 100644 index 0000000000..aa885adc07 --- /dev/null +++ b/build/build-sdk-images/tool/template/test.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# Copyright 2017 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +# Add steps required to test your language specific SDK Agones integration. \ No newline at end of file diff --git a/build/includes/sdk.mk b/build/includes/sdk.mk new file mode 100644 index 0000000000..eee25831ee --- /dev/null +++ b/build/includes/sdk.mk @@ -0,0 +1,91 @@ +# Copyright 2019 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# ____ ____ ____ _____ _ _ +# __ _| _ \| _ \ / ___| |_ _|__ ___ | (_)_ __ __ _ +# / _` | |_) | |_) | | | |/ _ \ / _ \| | | '_ \ / _` | +# | (_| | _ <| __/| |___ | | (_) | (_) | | | | | | (_| | +# \__, |_| \_\_| \____| |_|\___/ \___/|_|_|_| |_|\__, | +# |___/ |___/ + +build_sdk_base_tag = agones-build-sdk-base:$(build_version) +build_sdk_prefix = agones-build-sdk- +grpc_release_tag = v1.16.1 +sdk_build_folder = build-sdk-images/ +SDK_FOLDER ?= go +COMMAND ?= gen + +.PHONY: test-sdks test-sdk build-sdks build-sdk gen-all-sdk-grpc gen-sdk-grpc run-all-sdk-command run-sdk-command + +# Tests all the sdks +test-sdks: COMMAND := test +test-sdks: run-all-sdk-command + +# Tests a single sdk, use SDK_FOLDER variable to specify the sdk folder. +test-sdk: COMMAND := test +test-sdk: run-sdk-command + +# Builds all the sdks +build-sdks: COMMAND := build +build-sdks: run-all-sdk-command + +# Builds a single sdk, use SDK_FOLDER variable to specify the sdk folder. +build-sdk: COMMAND := build +build-sdk: run-sdk-command + +# Generates grpc server and client for all supported languages. +gen-all-sdk-grpc: COMMAND := gen +gen-all-sdk-grpc: run-all-sdk-command + +# Generates grpc server and client for a single sdk, use SDK_FOLDER variable to specify the sdk folder. +gen-sdk-grpc: COMMAND := gen +gen-sdk-grpc: run-sdk-command + +# Runs a command on all supported languages, use COMMAND variable to select which command. +run-all-sdk-command: + cd $(sdk_build_folder); \ + for d in */ ; do \ + if [ "$${d%?}" != "tool" ] && [ -f $$d/$(COMMAND).sh ]; then \ + ( cd .. && $(MAKE) run-sdk-command COMMAND=$(COMMAND) SDK_FOLDER=$${d%?} ) \ + || { failed=1; break; }; \ + fi \ + done; \ + if (( failed )); then \ + echo "Failed to run SDK command: $(COMMAND) on SDK: $(SDK_FOLDER)"; \ + fi + +# Runs a command for a specific SDK. +run-sdk-command: + $(MAKE) ensure-build-sdk-image SDK_FOLDER=$(SDK_FOLDER) + docker run --rm $(common_mounts) -e "VERSION=$(VERSION)" \ + $(DOCKER_RUN_ARGS) $(build_sdk_prefix)$(SDK_FOLDER):$(build_version) $(COMMAND) + +# Builds the base GRPC docker image. +build-build-sdk-image-base: DOCKER_BUILD_ARGS= --build-arg GRPC_RELEASE_TAG=$(grpc_release_tag) +build-build-sdk-image-base: + docker build --tag=$(build_sdk_base_tag) $(build_path)build-sdk-images/tool/base $(DOCKER_BUILD_ARGS) + +# Builds the docker image used by commands for a specific sdk +build-build-sdk-image: DOCKER_BUILD_ARGS= --build-arg BASE_IMAGE=$(build_sdk_base_tag) +build-build-sdk-image: ensure-build-sdk-image-base + docker build --tag=$(build_sdk_prefix)$(SDK_FOLDER):$(build_version) $(build_path)build-sdk-images/$(SDK_FOLDER) $(DOCKER_BUILD_ARGS) + +# create the sdk base build image if it doesn't exist +ensure-build-sdk-image-base: + $(MAKE) build-build-sdk-image-base + +# create the build image sdk if it doesn't exist +ensure-build-sdk-image: + $(MAKE) build-build-sdk-image SDK_FOLDER=$(SDK_FOLDER) \ No newline at end of file diff --git a/pkg/sdk/sdk.pb.gw.go b/pkg/sdk/sdk.pb.gw.go index 9c533c74a1..436c6c2f81 100644 --- a/pkg/sdk/sdk.pb.gw.go +++ b/pkg/sdk/sdk.pb.gw.go @@ -12,36 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// This code was autogenerated. Do not edit directly. -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// This code was autogenerated. Do not edit directly. -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - // This code was autogenerated. Do not edit directly. // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. // source: sdk.proto @@ -54,13 +24,13 @@ It translates gRPC into RESTful JSON APIs. package sdk import ( + "context" "io" "net/http" "github.com/golang/protobuf/proto" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/grpc-ecosystem/grpc-gateway/utilities" - "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" @@ -77,7 +47,11 @@ func request_SDK_Ready_0(ctx context.Context, marshaler runtime.Marshaler, clien var protoReq Empty var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -90,7 +64,11 @@ func request_SDK_Shutdown_0(ctx context.Context, marshaler runtime.Marshaler, cl var protoReq Empty var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -103,7 +81,7 @@ func request_SDK_Health_0(ctx context.Context, marshaler runtime.Marshaler, clie var metadata runtime.ServerMetadata stream, err := client.Health(ctx) if err != nil { - grpclog.Printf("Failed to start streaming: %v", err) + grpclog.Infof("Failed to start streaming: %v", err) return nil, metadata, err } dec := marshaler.NewDecoder(req.Body) @@ -114,22 +92,22 @@ func request_SDK_Health_0(ctx context.Context, marshaler runtime.Marshaler, clie break } if err != nil { - grpclog.Printf("Failed to decode request: %v", err) + grpclog.Infof("Failed to decode request: %v", err) return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } if err = stream.Send(&protoReq); err != nil { - grpclog.Printf("Failed to send request: %v", err) + grpclog.Infof("Failed to send request: %v", err) return nil, metadata, err } } if err := stream.CloseSend(); err != nil { - grpclog.Printf("Failed to terminate client stream: %v", err) + grpclog.Infof("Failed to terminate client stream: %v", err) return nil, metadata, err } header, err := stream.Header() if err != nil { - grpclog.Printf("Failed to get header from client: %v", err) + grpclog.Infof("Failed to get header from client: %v", err) return nil, metadata, err } metadata.HeaderMD = header @@ -170,7 +148,11 @@ func request_SDK_SetLabel_0(ctx context.Context, marshaler runtime.Marshaler, cl var protoReq KeyValue var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -183,7 +165,11 @@ func request_SDK_SetAnnotation_0(ctx context.Context, marshaler runtime.Marshale var protoReq KeyValue var metadata runtime.ServerMetadata - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && err != io.EOF { + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -202,14 +188,14 @@ func RegisterSDKHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, defer func() { if err != nil { if cerr := conn.Close(); cerr != nil { - grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } return } go func() { <-ctx.Done() if cerr := conn.Close(); cerr != nil { - grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr) + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) } }() }() @@ -223,8 +209,8 @@ func RegisterSDKHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.C return RegisterSDKHandlerClient(ctx, mux, NewSDKClient(conn)) } -// RegisterSDKHandler registers the http handlers for service SDK to "mux". -// The handlers forward requests to the grpc endpoint over the given implementation of "SDKClient". +// RegisterSDKHandlerClient registers the http handlers for service SDK +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SDKClient". // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SDKClient" // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in // "SDKClient" to call the correct interceptors. @@ -233,15 +219,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("POST", pattern_SDK_Ready_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -262,15 +239,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("POST", pattern_SDK_Shutdown_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -291,15 +259,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("POST", pattern_SDK_Health_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -320,15 +279,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("GET", pattern_SDK_GetGameServer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -349,15 +299,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("GET", pattern_SDK_WatchGameServer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -378,15 +319,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("PUT", pattern_SDK_SetLabel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { @@ -407,15 +339,6 @@ func RegisterSDKHandlerClient(ctx context.Context, mux *runtime.ServeMux, client mux.Handle("PUT", pattern_SDK_SetAnnotation_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() - if cn, ok := w.(http.CloseNotifier); ok { - go func(done <-chan struct{}, closed <-chan bool) { - select { - case <-done: - case <-closed: - cancel() - } - }(ctx.Done(), cn.CloseNotify()) - } inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) rctx, err := runtime.AnnotateContext(ctx, mux, req) if err != nil { diff --git a/sdk.swagger.json b/sdk.swagger.json index d87c3ba3d5..d7d5b58623 100644 --- a/sdk.swagger.json +++ b/sdk.swagger.json @@ -20,7 +20,7 @@ "operationId": "GetGameServer", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkGameServer" } @@ -37,7 +37,7 @@ "operationId": "Health", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkEmpty" } @@ -65,7 +65,7 @@ "operationId": "SetAnnotation", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkEmpty" } @@ -92,7 +92,7 @@ "operationId": "SetLabel", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkEmpty" } @@ -119,7 +119,7 @@ "operationId": "Ready", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkEmpty" } @@ -146,7 +146,7 @@ "operationId": "Shutdown", "responses": { "200": { - "description": "", + "description": "A successful response.", "schema": { "$ref": "#/definitions/sdkEmpty" } @@ -173,9 +173,9 @@ "operationId": "WatchGameServer", "responses": { "200": { - "description": "(streaming responses)", + "description": "A successful response.(streaming responses)", "schema": { - "$ref": "#/definitions/sdkGameServer" + "$ref": "#/x-stream-definitions/sdkGameServer" } } }, @@ -288,6 +288,43 @@ } } }, + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "runtimeStreamError": { + "type": "object", + "properties": { + "grpc_code": { + "type": "integer", + "format": "int32" + }, + "http_code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "http_status": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, "sdkEmpty": { "type": "object", "title": "I am Empty" @@ -319,5 +356,19 @@ }, "title": "Key, Value entry" } + }, + "x-stream-definitions": { + "sdkGameServer": { + "type": "object", + "properties": { + "result": { + "$ref": "#/definitions/sdkGameServer" + }, + "error": { + "$ref": "#/definitions/runtimeStreamError" + } + }, + "title": "Stream result of sdkGameServer" + } } } diff --git a/sdks/cpp/Makefile b/sdks/cpp/Makefile index 62f399cf01..42a1647c2a 100644 --- a/sdks/cpp/Makefile +++ b/sdks/cpp/Makefile @@ -25,8 +25,8 @@ install_path := /opt/local build: -mkdir $(build_path) apt-get install - cd $(build_path) && /opt/cmake/bin/cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -Wno-dev -DCMAKE_INSTALL_PREFIX=.install - cd $(build_path) && /opt/cmake/bin/cmake --build . --target install + cd $(build_path) && cmake .. -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -Wno-dev -DCMAKE_INSTALL_PREFIX=.install + cd $(build_path) && cmake --build . --target install install: cp -r $(build_path)/.install $(install_path) diff --git a/sdks/cpp/src/google/annotations.pb.cc b/sdks/cpp/google/api/annotations.pb.cc similarity index 100% rename from sdks/cpp/src/google/annotations.pb.cc rename to sdks/cpp/google/api/annotations.pb.cc diff --git a/sdks/cpp/include/google/api/annotations.pb.h b/sdks/cpp/google/api/annotations.pb.h similarity index 94% rename from sdks/cpp/include/google/api/annotations.pb.h rename to sdks/cpp/google/api/annotations.pb.h index 8fca6ee29b..4c27070704 100644 --- a/sdks/cpp/include/google/api/annotations.pb.h +++ b/sdks/cpp/google/api/annotations.pb.h @@ -46,11 +46,11 @@ #include "google/api/http.pb.h" #include // @@protoc_insertion_point(includes) -#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fapi_2fannotations_2eproto AGONES_EXPORT +#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fapi_2fannotations_2eproto namespace protobuf_google_2fapi_2fannotations_2eproto { // Internal implementation detail -- do not use these members. -struct AGONES_EXPORT TableStruct { +struct TableStruct { static const ::google::protobuf::internal::ParseTableField entries[]; static const ::google::protobuf::internal::AuxillaryParseTableField aux[]; static const ::google::protobuf::internal::ParseTable schema[1]; @@ -58,7 +58,7 @@ struct AGONES_EXPORT TableStruct { static const ::google::protobuf::internal::SerializationTable serialization_table[]; static const ::google::protobuf::uint32 offsets[]; }; -void AGONES_EXPORT AddDescriptors(); +void AddDescriptors(); } // namespace protobuf_google_2fapi_2fannotations_2eproto namespace google { namespace api { @@ -73,7 +73,7 @@ namespace api { // =================================================================== static const int kHttpFieldNumber = 72295728; -AGONES_EXPORT extern ::google::protobuf::internal::ExtensionIdentifier< ::google::protobuf::MethodOptions, +extern ::google::protobuf::internal::ExtensionIdentifier< ::google::protobuf::MethodOptions, ::google::protobuf::internal::MessageTypeTraits< ::google::api::HttpRule >, 11, false > http; diff --git a/sdks/cpp/src/google/http.pb.cc b/sdks/cpp/google/api/http.pb.cc similarity index 99% rename from sdks/cpp/src/google/http.pb.cc rename to sdks/cpp/google/api/http.pb.cc index 9beef12614..30212e834e 100644 --- a/sdks/cpp/src/google/http.pb.cc +++ b/sdks/cpp/google/api/http.pb.cc @@ -75,7 +75,7 @@ static void InitDefaultsHttp() { ::google::api::Http::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<1> scc_info_Http = +::google::protobuf::internal::SCCInfo<1> scc_info_Http = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsHttp}, { &protobuf_google_2fapi_2fhttp_2eproto::scc_info_HttpRule.base,}}; @@ -90,7 +90,7 @@ static void InitDefaultsHttpRule() { ::google::api::HttpRule::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<1> scc_info_HttpRule = +::google::protobuf::internal::SCCInfo<1> scc_info_HttpRule = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsHttpRule}, { &protobuf_google_2fapi_2fhttp_2eproto::scc_info_CustomHttpPattern.base,}}; @@ -105,7 +105,7 @@ static void InitDefaultsCustomHttpPattern() { ::google::api::CustomHttpPattern::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_CustomHttpPattern = +::google::protobuf::internal::SCCInfo<0> scc_info_CustomHttpPattern = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsCustomHttpPattern}, {}}; void InitDefaults() { diff --git a/sdks/cpp/include/google/api/http.pb.h b/sdks/cpp/google/api/http.pb.h similarity index 98% rename from sdks/cpp/include/google/api/http.pb.h rename to sdks/cpp/google/api/http.pb.h index b9c24c7457..582b146845 100644 --- a/sdks/cpp/include/google/api/http.pb.h +++ b/sdks/cpp/google/api/http.pb.h @@ -46,11 +46,11 @@ #include // IWYU pragma: export #include // @@protoc_insertion_point(includes) -#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fapi_2fhttp_2eproto AGONES_EXPORT +#define PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fapi_2fhttp_2eproto namespace protobuf_google_2fapi_2fhttp_2eproto { // Internal implementation detail -- do not use these members. -struct AGONES_EXPORT TableStruct { +struct TableStruct { static const ::google::protobuf::internal::ParseTableField entries[]; static const ::google::protobuf::internal::AuxillaryParseTableField aux[]; static const ::google::protobuf::internal::ParseTable schema[3]; @@ -58,26 +58,26 @@ struct AGONES_EXPORT TableStruct { static const ::google::protobuf::internal::SerializationTable serialization_table[]; static const ::google::protobuf::uint32 offsets[]; }; -void AGONES_EXPORT AddDescriptors(); +void AddDescriptors(); } // namespace protobuf_google_2fapi_2fhttp_2eproto namespace google { namespace api { class CustomHttpPattern; class CustomHttpPatternDefaultTypeInternal; -AGONES_EXPORT extern CustomHttpPatternDefaultTypeInternal _CustomHttpPattern_default_instance_; +extern CustomHttpPatternDefaultTypeInternal _CustomHttpPattern_default_instance_; class Http; class HttpDefaultTypeInternal; -AGONES_EXPORT extern HttpDefaultTypeInternal _Http_default_instance_; +extern HttpDefaultTypeInternal _Http_default_instance_; class HttpRule; class HttpRuleDefaultTypeInternal; -AGONES_EXPORT extern HttpRuleDefaultTypeInternal _HttpRule_default_instance_; +extern HttpRuleDefaultTypeInternal _HttpRule_default_instance_; } // namespace api } // namespace google namespace google { namespace protobuf { -template<> AGONES_EXPORT ::google::api::CustomHttpPattern* Arena::CreateMaybeMessage<::google::api::CustomHttpPattern>(Arena*); -template<> AGONES_EXPORT ::google::api::Http* Arena::CreateMaybeMessage<::google::api::Http>(Arena*); -template<> AGONES_EXPORT ::google::api::HttpRule* Arena::CreateMaybeMessage<::google::api::HttpRule>(Arena*); +template<> ::google::api::CustomHttpPattern* Arena::CreateMaybeMessage<::google::api::CustomHttpPattern>(Arena*); +template<> ::google::api::Http* Arena::CreateMaybeMessage<::google::api::Http>(Arena*); +template<> ::google::api::HttpRule* Arena::CreateMaybeMessage<::google::api::HttpRule>(Arena*); } // namespace protobuf } // namespace google namespace google { @@ -85,7 +85,7 @@ namespace api { // =================================================================== -class AGONES_EXPORT Http : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.Http) */ { +class Http : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.Http) */ { public: Http(); virtual ~Http(); @@ -216,7 +216,7 @@ class AGONES_EXPORT Http : public ::google::protobuf::Message /* @@protoc_insert }; // ------------------------------------------------------------------- -class AGONES_EXPORT HttpRule : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.HttpRule) */ { +class HttpRule : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.HttpRule) */ { public: HttpRule(); virtual ~HttpRule(); @@ -589,7 +589,7 @@ class AGONES_EXPORT HttpRule : public ::google::protobuf::Message /* @@protoc_in }; // ------------------------------------------------------------------- -class AGONES_EXPORT CustomHttpPattern : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.CustomHttpPattern) */ { +class CustomHttpPattern : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:google.api.CustomHttpPattern) */ { public: CustomHttpPattern(); virtual ~CustomHttpPattern(); diff --git a/sdks/cpp/src/agones/sdk.grpc.pb.cc b/sdks/cpp/sdk.grpc.pb.cc similarity index 100% rename from sdks/cpp/src/agones/sdk.grpc.pb.cc rename to sdks/cpp/sdk.grpc.pb.cc diff --git a/sdks/cpp/include/agones/sdk.grpc.pb.h b/sdks/cpp/sdk.grpc.pb.h similarity index 98% rename from sdks/cpp/include/agones/sdk.grpc.pb.h rename to sdks/cpp/sdk.grpc.pb.h index 93fa49c7ee..453e77839b 100644 --- a/sdks/cpp/include/agones/sdk.grpc.pb.h +++ b/sdks/cpp/sdk.grpc.pb.h @@ -1,18 +1,3 @@ -// Copyright 2018 Google Inc. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// This code was autogenerated. Do not edit directly. // Generated by the gRPC C++ plugin. // If you make any local change, they will be lost. // source: sdk.proto diff --git a/sdks/cpp/src/agones/sdk.pb.cc b/sdks/cpp/sdk.pb.cc similarity index 99% rename from sdks/cpp/src/agones/sdk.pb.cc rename to sdks/cpp/sdk.pb.cc index bbd01720bf..54924583d4 100644 --- a/sdks/cpp/src/agones/sdk.pb.cc +++ b/sdks/cpp/sdk.pb.cc @@ -113,7 +113,7 @@ static void InitDefaultsEmpty() { ::stable::agones::dev::sdk::Empty::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_Empty = +::google::protobuf::internal::SCCInfo<0> scc_info_Empty = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsEmpty}, {}}; static void InitDefaultsKeyValue() { @@ -127,7 +127,7 @@ static void InitDefaultsKeyValue() { ::stable::agones::dev::sdk::KeyValue::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_KeyValue = +::google::protobuf::internal::SCCInfo<0> scc_info_KeyValue = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsKeyValue}, {}}; static void InitDefaultsGameServer_ObjectMeta_AnnotationsEntry_DoNotUse() { @@ -140,7 +140,7 @@ static void InitDefaultsGameServer_ObjectMeta_AnnotationsEntry_DoNotUse() { ::stable::agones::dev::sdk::GameServer_ObjectMeta_AnnotationsEntry_DoNotUse::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_ObjectMeta_AnnotationsEntry_DoNotUse = +::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_ObjectMeta_AnnotationsEntry_DoNotUse = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGameServer_ObjectMeta_AnnotationsEntry_DoNotUse}, {}}; static void InitDefaultsGameServer_ObjectMeta_LabelsEntry_DoNotUse() { @@ -153,7 +153,7 @@ static void InitDefaultsGameServer_ObjectMeta_LabelsEntry_DoNotUse() { ::stable::agones::dev::sdk::GameServer_ObjectMeta_LabelsEntry_DoNotUse::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_ObjectMeta_LabelsEntry_DoNotUse = +::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_ObjectMeta_LabelsEntry_DoNotUse = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGameServer_ObjectMeta_LabelsEntry_DoNotUse}, {}}; static void InitDefaultsGameServer_ObjectMeta() { @@ -167,7 +167,7 @@ static void InitDefaultsGameServer_ObjectMeta() { ::stable::agones::dev::sdk::GameServer_ObjectMeta::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<2> scc_info_GameServer_ObjectMeta = +::google::protobuf::internal::SCCInfo<2> scc_info_GameServer_ObjectMeta = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsGameServer_ObjectMeta}, { &protobuf_sdk_2eproto::scc_info_GameServer_ObjectMeta_AnnotationsEntry_DoNotUse.base, &protobuf_sdk_2eproto::scc_info_GameServer_ObjectMeta_LabelsEntry_DoNotUse.base,}}; @@ -183,7 +183,7 @@ static void InitDefaultsGameServer_Spec_Health() { ::stable::agones::dev::sdk::GameServer_Spec_Health::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_Spec_Health = +::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_Spec_Health = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGameServer_Spec_Health}, {}}; static void InitDefaultsGameServer_Spec() { @@ -197,7 +197,7 @@ static void InitDefaultsGameServer_Spec() { ::stable::agones::dev::sdk::GameServer_Spec::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<1> scc_info_GameServer_Spec = +::google::protobuf::internal::SCCInfo<1> scc_info_GameServer_Spec = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGameServer_Spec}, { &protobuf_sdk_2eproto::scc_info_GameServer_Spec_Health.base,}}; @@ -212,7 +212,7 @@ static void InitDefaultsGameServer_Status_Port() { ::stable::agones::dev::sdk::GameServer_Status_Port::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_Status_Port = +::google::protobuf::internal::SCCInfo<0> scc_info_GameServer_Status_Port = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGameServer_Status_Port}, {}}; static void InitDefaultsGameServer_Status() { @@ -226,7 +226,7 @@ static void InitDefaultsGameServer_Status() { ::stable::agones::dev::sdk::GameServer_Status::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<1> scc_info_GameServer_Status = +::google::protobuf::internal::SCCInfo<1> scc_info_GameServer_Status = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGameServer_Status}, { &protobuf_sdk_2eproto::scc_info_GameServer_Status_Port.base,}}; @@ -241,7 +241,7 @@ static void InitDefaultsGameServer() { ::stable::agones::dev::sdk::GameServer::InitAsDefaultInstance(); } -AGONES_EXPORT ::google::protobuf::internal::SCCInfo<3> scc_info_GameServer = +::google::protobuf::internal::SCCInfo<3> scc_info_GameServer = {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 3, InitDefaultsGameServer}, { &protobuf_sdk_2eproto::scc_info_GameServer_ObjectMeta.base, &protobuf_sdk_2eproto::scc_info_GameServer_Spec.base, diff --git a/sdks/cpp/include/agones/sdk.pb.h b/sdks/cpp/sdk.pb.h similarity index 95% rename from sdks/cpp/include/agones/sdk.pb.h rename to sdks/cpp/sdk.pb.h index ef71002082..37f751792e 100644 --- a/sdks/cpp/include/agones/sdk.pb.h +++ b/sdks/cpp/sdk.pb.h @@ -50,11 +50,11 @@ #include #include "google/api/annotations.pb.h" // @@protoc_insertion_point(includes) -#define PROTOBUF_INTERNAL_EXPORT_protobuf_sdk_2eproto AGONES_EXPORT +#define PROTOBUF_INTERNAL_EXPORT_protobuf_sdk_2eproto namespace protobuf_sdk_2eproto { // Internal implementation detail -- do not use these members. -struct AGONES_EXPORT TableStruct { +struct TableStruct { static const ::google::protobuf::internal::ParseTableField entries[]; static const ::google::protobuf::internal::AuxillaryParseTableField aux[]; static const ::google::protobuf::internal::ParseTable schema[10]; @@ -62,7 +62,7 @@ struct AGONES_EXPORT TableStruct { static const ::google::protobuf::internal::SerializationTable serialization_table[]; static const ::google::protobuf::uint32 offsets[]; }; -void AGONES_EXPORT AddDescriptors(); +void AddDescriptors(); } // namespace protobuf_sdk_2eproto namespace stable { namespace agones { @@ -70,50 +70,50 @@ namespace dev { namespace sdk { class Empty; class EmptyDefaultTypeInternal; -AGONES_EXPORT extern EmptyDefaultTypeInternal _Empty_default_instance_; +extern EmptyDefaultTypeInternal _Empty_default_instance_; class GameServer; class GameServerDefaultTypeInternal; -AGONES_EXPORT extern GameServerDefaultTypeInternal _GameServer_default_instance_; +extern GameServerDefaultTypeInternal _GameServer_default_instance_; class GameServer_ObjectMeta; class GameServer_ObjectMetaDefaultTypeInternal; -AGONES_EXPORT extern GameServer_ObjectMetaDefaultTypeInternal _GameServer_ObjectMeta_default_instance_; +extern GameServer_ObjectMetaDefaultTypeInternal _GameServer_ObjectMeta_default_instance_; class GameServer_ObjectMeta_AnnotationsEntry_DoNotUse; class GameServer_ObjectMeta_AnnotationsEntry_DoNotUseDefaultTypeInternal; -AGONES_EXPORT extern GameServer_ObjectMeta_AnnotationsEntry_DoNotUseDefaultTypeInternal _GameServer_ObjectMeta_AnnotationsEntry_DoNotUse_default_instance_; +extern GameServer_ObjectMeta_AnnotationsEntry_DoNotUseDefaultTypeInternal _GameServer_ObjectMeta_AnnotationsEntry_DoNotUse_default_instance_; class GameServer_ObjectMeta_LabelsEntry_DoNotUse; class GameServer_ObjectMeta_LabelsEntry_DoNotUseDefaultTypeInternal; -AGONES_EXPORT extern GameServer_ObjectMeta_LabelsEntry_DoNotUseDefaultTypeInternal _GameServer_ObjectMeta_LabelsEntry_DoNotUse_default_instance_; +extern GameServer_ObjectMeta_LabelsEntry_DoNotUseDefaultTypeInternal _GameServer_ObjectMeta_LabelsEntry_DoNotUse_default_instance_; class GameServer_Spec; class GameServer_SpecDefaultTypeInternal; -AGONES_EXPORT extern GameServer_SpecDefaultTypeInternal _GameServer_Spec_default_instance_; +extern GameServer_SpecDefaultTypeInternal _GameServer_Spec_default_instance_; class GameServer_Spec_Health; class GameServer_Spec_HealthDefaultTypeInternal; -AGONES_EXPORT extern GameServer_Spec_HealthDefaultTypeInternal _GameServer_Spec_Health_default_instance_; +extern GameServer_Spec_HealthDefaultTypeInternal _GameServer_Spec_Health_default_instance_; class GameServer_Status; class GameServer_StatusDefaultTypeInternal; -AGONES_EXPORT extern GameServer_StatusDefaultTypeInternal _GameServer_Status_default_instance_; +extern GameServer_StatusDefaultTypeInternal _GameServer_Status_default_instance_; class GameServer_Status_Port; class GameServer_Status_PortDefaultTypeInternal; -AGONES_EXPORT extern GameServer_Status_PortDefaultTypeInternal _GameServer_Status_Port_default_instance_; +extern GameServer_Status_PortDefaultTypeInternal _GameServer_Status_Port_default_instance_; class KeyValue; class KeyValueDefaultTypeInternal; -AGONES_EXPORT extern KeyValueDefaultTypeInternal _KeyValue_default_instance_; +extern KeyValueDefaultTypeInternal _KeyValue_default_instance_; } // namespace sdk } // namespace dev } // namespace agones } // namespace stable namespace google { namespace protobuf { -template<> AGONES_EXPORT ::stable::agones::dev::sdk::Empty* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::Empty>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_ObjectMeta* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_ObjectMeta_AnnotationsEntry_DoNotUse* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta_AnnotationsEntry_DoNotUse>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_ObjectMeta_LabelsEntry_DoNotUse* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta_LabelsEntry_DoNotUse>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_Spec* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Spec>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_Spec_Health* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Spec_Health>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_Status* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Status>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::GameServer_Status_Port* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Status_Port>(Arena*); -template<> AGONES_EXPORT ::stable::agones::dev::sdk::KeyValue* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::KeyValue>(Arena*); +template<> ::stable::agones::dev::sdk::Empty* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::Empty>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_ObjectMeta* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_ObjectMeta_AnnotationsEntry_DoNotUse* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta_AnnotationsEntry_DoNotUse>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_ObjectMeta_LabelsEntry_DoNotUse* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_ObjectMeta_LabelsEntry_DoNotUse>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_Spec* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Spec>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_Spec_Health* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Spec_Health>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_Status* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Status>(Arena*); +template<> ::stable::agones::dev::sdk::GameServer_Status_Port* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::GameServer_Status_Port>(Arena*); +template<> ::stable::agones::dev::sdk::KeyValue* Arena::CreateMaybeMessage<::stable::agones::dev::sdk::KeyValue>(Arena*); } // namespace protobuf } // namespace google namespace stable { @@ -123,7 +123,7 @@ namespace sdk { // =================================================================== -class AGONES_EXPORT Empty : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.Empty) */ { +class Empty : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.Empty) */ { public: Empty(); virtual ~Empty(); @@ -219,7 +219,7 @@ class AGONES_EXPORT Empty : public ::google::protobuf::Message /* @@protoc_inser }; // ------------------------------------------------------------------- -class AGONES_EXPORT KeyValue : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.KeyValue) */ { +class KeyValue : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.KeyValue) */ { public: KeyValue(); virtual ~KeyValue(); @@ -387,7 +387,7 @@ class GameServer_ObjectMeta_LabelsEntry_DoNotUse : public ::google::protobuf::in // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer_ObjectMeta : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.ObjectMeta) */ { +class GameServer_ObjectMeta : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.ObjectMeta) */ { public: GameServer_ObjectMeta(); virtual ~GameServer_ObjectMeta(); @@ -595,7 +595,7 @@ class AGONES_EXPORT GameServer_ObjectMeta : public ::google::protobuf::Message / }; // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer_Spec_Health : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Spec.Health) */ { +class GameServer_Spec_Health : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Spec.Health) */ { public: GameServer_Spec_Health(); virtual ~GameServer_Spec_Health(); @@ -719,7 +719,7 @@ class AGONES_EXPORT GameServer_Spec_Health : public ::google::protobuf::Message }; // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer_Spec : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Spec) */ { +class GameServer_Spec : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Spec) */ { public: GameServer_Spec(); virtual ~GameServer_Spec(); @@ -830,7 +830,7 @@ class AGONES_EXPORT GameServer_Spec : public ::google::protobuf::Message /* @@pr }; // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer_Status_Port : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Status.Port) */ { +class GameServer_Status_Port : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Status.Port) */ { public: GameServer_Status_Port(); virtual ~GameServer_Status_Port(); @@ -948,7 +948,7 @@ class AGONES_EXPORT GameServer_Status_Port : public ::google::protobuf::Message }; // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer_Status : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Status) */ { +class GameServer_Status : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer.Status) */ { public: GameServer_Status(); virtual ~GameServer_Status(); @@ -1089,7 +1089,7 @@ class AGONES_EXPORT GameServer_Status : public ::google::protobuf::Message /* @@ }; // ------------------------------------------------------------------- -class AGONES_EXPORT GameServer : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer) */ { +class GameServer : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:stable.agones.dev.sdk.GameServer) */ { public: GameServer(); virtual ~GameServer();