diff --git a/squeaknode/client/rpc_client.py b/squeaknode/client/rpc_client.py index 1aaf7e46..3cbc7e43 100644 --- a/squeaknode/client/rpc_client.py +++ b/squeaknode/client/rpc_client.py @@ -4,6 +4,7 @@ import grpc from squeaknode.common.rpc import squeak_server_pb2 from squeaknode.common.rpc import squeak_server_pb2_grpc +from squeaknode.common.rpc.util import build_squeak_msg from squeak.core.signing import CSigningKey from squeak.core.signing import CSqueakAddress @@ -43,5 +44,10 @@ class RPCClient(object): # channel = grpc.insecure_channel('sqkserver:50052') stub = squeak_server_pb2_grpc.SqueakServerStub(channel) response = stub.SayHello(squeak_server_pb2.HelloRequest(name='rpc_client')) - print("Greeter client received: " + response.message) logger.info("Greeter client received: " + response.message) + + logger.info("Building squeak msg with squeak: " + str(squeak)) + squeak_msg = build_squeak_msg(squeak) + logger.info("Building squeak msg with squeak_msg: " + str(squeak_msg)) + response2 = stub.PostSqueak(squeak_server_pb2.PostSqueakRequest(squeak=squeak_msg)) + logger.info("Post squeak client received: " + str(response2.hash)) diff --git a/squeaknode/common/rpc/squeak_server.proto b/squeaknode/common/rpc/squeak_server.proto index bd159984..41a7a080 100644 --- a/squeaknode/common/rpc/squeak_server.proto +++ b/squeaknode/common/rpc/squeak_server.proto @@ -27,9 +27,9 @@ service SqueakServer { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} - // /** sqk: `postsqueak` - // */ - // rpc Postsqueak (PostsqueakRequest) returns (PostsqueakResponse) {} + /** sqk: `postsqueak` + */ + rpc PostSqueak (PostSqueakRequest) returns (PostSqueakReply) {} // /** sqk: `getsqueak` // */ @@ -47,9 +47,9 @@ message HelloReply { string message = 1; } -message PostsqueakRequest { +message PostSqueakRequest { /// Content of the squeak to be made. - string content = 1; + Squeak squeak = 1; } message GetSqueakRequest { @@ -57,9 +57,9 @@ message GetSqueakRequest { bytes hash = 1; } -message PostsqueakResponse { +message PostSqueakReply { /// The squeak. - Squeak squeak = 1; + bytes hash = 1; } message GetSqueakResponse { @@ -67,55 +67,10 @@ message GetSqueakResponse { Squeak squeak = 1; } -message Addr { - string host = 1; - - uint64 port = 2; -} - message Squeak { /// Hash of the squeak. bytes hash = 1; - /// Protocol version - uint64 n_version = 2; - - /// Hash of the squeak to which it replies. - bytes hash_reply_squeak = 3; - - /// Hash of the bitcoin block. - bytes hash_block = 4; - - /// Block height of the squeak. - uint64 block_height = 5; - - /// Public key script - bytes script_pub_key = 6; - - /// Hash of the data key - bytes hash_data_key = 7; - - /// Initialization vector - bytes iv = 8; - - /// Timestamp of the squeak. - uint64 n_time = 9; - - /// Nonce - uint64 nonce = 10; - - /// Encrypted content - bytes enc_content = 11; - - /// Signatute script - bytes script_sig = 12; - - /// Data key - bytes data_key = 13; - - /// Address of the creator. - string address = 14; - - /// Decrypted content of the squeak. - string content = 15; + /// Serialized squeak. + bytes serialized_squeak = 2; } diff --git a/squeaknode/common/rpc/util.py b/squeaknode/common/rpc/util.py new file mode 100644 index 00000000..3244d3ea --- /dev/null +++ b/squeaknode/common/rpc/util.py @@ -0,0 +1,16 @@ + +from squeak.core import CSqueak + +from squeaknode.common.rpc import squeak_server_pb2 +from squeaknode.common.rpc import squeak_server_pb2_grpc + + +def build_squeak_msg(squeak): + return squeak_server_pb2.Squeak( + hash=squeak.GetHash(), + serialized_squeak=squeak.serialize(), + ) + + +def squeak_from_msg(squeak_msg): + return CSqueak.deserialize(squeak_msg.serialized_squeak) diff --git a/squeaknode/server/squeak_server_handler.py b/squeaknode/server/squeak_server_handler.py index 0266bb93..f743649b 100644 --- a/squeaknode/server/squeak_server_handler.py +++ b/squeaknode/server/squeak_server_handler.py @@ -29,6 +29,10 @@ class SqueakServerHandler(object): def say_hello(self): return 'hello from the handler' + def handle_posted_squeak(self, squeak): + logger.info("Handler got posted squeak: " + str(squeak)) + return squeak.GetHash() + # class ClientNodeError(Exception): # pass diff --git a/squeaknode/server/squeak_server_servicer.py b/squeaknode/server/squeak_server_servicer.py index 616f0ea5..ce3d64eb 100644 --- a/squeaknode/server/squeak_server_servicer.py +++ b/squeaknode/server/squeak_server_servicer.py @@ -20,6 +20,7 @@ import grpc from squeaknode.common.rpc import squeak_server_pb2 from squeaknode.common.rpc import squeak_server_pb2_grpc +from squeaknode.common.rpc.util import squeak_from_msg class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): @@ -41,6 +42,14 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer): # unconfirmed_balance=response.unconfirmed_balance, # ) + def PostSqueak(self, request, context): + squeak_msg = request.squeak + squeak = squeak_from_msg(squeak_msg) + squeak_hash = self.handler.handle_posted_squeak(squeak) + return squeak_server_pb2.PostSqueakReply( + hash=squeak_hash, + ) + def serve(self): print('Calling serve...', flush=True) server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))