From ab545db63915d1951412066a1b41b69294de9533 Mon Sep 17 00:00:00 2001
From: Martin Wistauder <mwistauder@student.tugraz.at>
Date: Mon, 16 May 2022 17:14:35 +0200
Subject: [PATCH] Added initial grpc setup

---
 .gitignore                   |  1 +
 client/python/client.py      | 13 +++++++++++++
 server/server.py             | 18 ++++++++++++++++++
 shared/gen-python-netcode.sh | 22 ++++++++++++++++++++++
 shared/netcode.proto         | 13 +++++++++++++
 5 files changed, 67 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 shared/gen-python-netcode.sh
 create mode 100644 shared/netcode.proto

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..188c9bd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+netcode/
diff --git a/client/python/client.py b/client/python/client.py
index e69de29..578ac19 100644
--- a/client/python/client.py
+++ b/client/python/client.py
@@ -0,0 +1,13 @@
+import grpc
+from netcode.netcode_pb2_grpc import NotifierComStub
+from netcode.netcode_pb2 import *
+
+channel = grpc.insecure_channel('localhost:8080')
+stub = NotifierComStub(channel)
+
+def sendMessage(msg):
+    request = SendMessageRequest(msg)
+    response = stub.SendMessage(request)
+
+if __name__ == "__main__":
+    sendMessage("test")
\ No newline at end of file
diff --git a/server/server.py b/server/server.py
index e69de29..25fb0e2 100644
--- a/server/server.py
+++ b/server/server.py
@@ -0,0 +1,18 @@
+import grpc
+from concurrent import futures
+
+from netcode.netcode_pb2_grpc import *
+from netcode.netcode_pb2 import *
+
+class NotifierService(NotifierComServicer):
+    def SendMessage(self, request, context):
+        print(request.message)
+        return Nothing()
+
+if __name__ == "__main__":
+    server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
+    add_NotifierComServicer_to_server(
+        NotifierService, server)
+    server.add_insecure_port('[::]:8080')
+    server.start()
+    server.wait_for_termination()
diff --git a/shared/gen-python-netcode.sh b/shared/gen-python-netcode.sh
new file mode 100644
index 0000000..f70d5d3
--- /dev/null
+++ b/shared/gen-python-netcode.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+##################################
+# Author: Martin Wistauder
+# Date: 05.10.2021
+# Version: 1.0
+##################################
+set -e
+
+usage='Usage: ./gen-python-netcode.sh {protobuf source dir} {output dir}
+Example usage: ./gen-python-netcode.sh ./protobuf ./netcode'
+
+# check params
+[ -z $1 ] && echo -e "Error: First parameter missing.\n$usage" && exit 1 || proto_dir="$1"
+[ -z $2 ] && echo -e "Error: Second parameter missing.\n$usage" && exit 1 || output_dir="$2"
+
+# vars
+proto_dir="$1"
+output_dir="$2"
+
+# generate the python netcode
+mkdir -p "$output_dir"
+python -m grpc_tools.protoc -I"$proto_dir" --python_out="$output_dir" --grpc_python_out="$output_dir" $(find "$proto_dir" -name "*.proto" -printf "%P ")
diff --git a/shared/netcode.proto b/shared/netcode.proto
new file mode 100644
index 0000000..efb2582
--- /dev/null
+++ b/shared/netcode.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+package netcode;
+
+service NotifierCom {
+  rpc SendMessage (SendMessageRequest) returns (Nothing);
+}
+
+message SendMessageRequest {
+  string message = 1;
+}
+
+message Nothing {
+}
-- 
GitLab