Successfully post squeak to server

This commit is contained in:
yzernik 2020-06-03 17:05:55 -07:00
parent 79b078b44b
commit 51ec9c160e
5 changed files with 45 additions and 55 deletions

View file

@ -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))

View file

@ -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;
}

View file

@ -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)

View file

@ -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

View file

@ -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))