starpc 0.44.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/echo/echo.pb.js +1 -1
  2. package/dist/mock/mock.pb.js +1 -1
  3. package/dist/rpcstream/rpcstream.pb.js +1 -1
  4. package/dist/srpc/rpcproto.pb.js +1 -1
  5. package/echo/Cargo.toml +0 -4
  6. package/echo/echo.pb.go +1 -1
  7. package/echo/echo.pb.rs +9 -0
  8. package/echo/echo.pb.ts +1 -1
  9. package/echo/echo_e2e_test.cpp +793 -34
  10. package/echo/echo_srpc.pb.cpp +1 -1
  11. package/echo/echo_srpc.pb.go +1 -1
  12. package/echo/echo_srpc.pb.hpp +3 -1
  13. package/echo/echo_srpc.pb.rs +312 -0
  14. package/echo/gen/mod.rs +15 -2
  15. package/echo/main.rs +9 -0
  16. package/go.mod +4 -3
  17. package/go.sum +8 -6
  18. package/mock/mock.pb.go +1 -1
  19. package/mock/mock.pb.rs +9 -0
  20. package/mock/mock.pb.ts +1 -1
  21. package/mock/mock_srpc.pb.cpp +1 -1
  22. package/mock/mock_srpc.pb.go +1 -1
  23. package/mock/mock_srpc.pb.hpp +3 -1
  24. package/mock/mock_srpc.pb.rs +103 -0
  25. package/package.json +5 -4
  26. package/srpc/Cargo.toml +1 -2
  27. package/srpc/client-rpc.cpp +20 -18
  28. package/srpc/client-rpc.hpp +14 -11
  29. package/srpc/client.cpp +11 -15
  30. package/srpc/client.hpp +17 -25
  31. package/srpc/common-rpc.cpp +12 -13
  32. package/srpc/common-rpc.hpp +13 -11
  33. package/srpc/errors.hpp +33 -20
  34. package/srpc/handler.hpp +3 -3
  35. package/srpc/invoker.hpp +26 -29
  36. package/srpc/lib.rs +1 -0
  37. package/srpc/message.hpp +4 -6
  38. package/srpc/msg-stream.hpp +13 -11
  39. package/srpc/mux.cpp +18 -17
  40. package/srpc/mux.hpp +15 -14
  41. package/srpc/packet.cpp +24 -26
  42. package/srpc/packet.hpp +14 -17
  43. package/srpc/proto.rs +5 -0
  44. package/srpc/rpcproto.pb.go +1 -1
  45. package/srpc/rpcproto.pb.rs +62 -0
  46. package/srpc/rpcproto.pb.ts +1 -1
  47. package/srpc/rpcstream/mod.rs +38 -0
  48. package/srpc/rpcstream/proto.rs +286 -0
  49. package/srpc/rpcstream/stream.rs +517 -0
  50. package/srpc/rpcstream/writer.rs +150 -0
  51. package/srpc/server-rpc.cpp +21 -21
  52. package/srpc/server-rpc.hpp +15 -13
  53. package/srpc/starpc.hpp +1 -1
  54. package/srpc/stream.hpp +18 -16
  55. package/srpc/writer.hpp +15 -12
  56. package/echo/build.rs +0 -15
  57. package/srpc/build.rs +0 -15
  58. package/srpc/proto/mod.rs +0 -10
@@ -7,7 +7,7 @@
7
7
 
8
8
  namespace starpc {
9
9
 
10
- ServerRPC::ServerRPC(Invoker* invoker, PacketWriter* writer)
10
+ ServerRPC::ServerRPC(Invoker *invoker, PacketWriter *writer)
11
11
  : invoker_(invoker) {
12
12
  Init();
13
13
  writer_ = writer;
@@ -19,7 +19,7 @@ ServerRPC::~ServerRPC() {
19
19
  }
20
20
  }
21
21
 
22
- Error ServerRPC::HandlePacketData(const std::string& data) {
22
+ Error ServerRPC::HandlePacketData(const std::string &data) {
23
23
  srpc::Packet msg;
24
24
  if (!msg.ParseFromString(data)) {
25
25
  return Error::InvalidMessage;
@@ -27,33 +27,33 @@ Error ServerRPC::HandlePacketData(const std::string& data) {
27
27
  return HandlePacket(msg);
28
28
  }
29
29
 
30
- Error ServerRPC::HandlePacket(const srpc::Packet& msg) {
30
+ Error ServerRPC::HandlePacket(const srpc::Packet &msg) {
31
31
  Error err = ValidatePacket(msg);
32
32
  if (err != Error::OK) {
33
33
  return err;
34
34
  }
35
35
 
36
36
  switch (msg.body_case()) {
37
- case srpc::Packet::kCallStart:
38
- return HandleCallStart(msg.call_start());
39
- case srpc::Packet::kCallData:
40
- return HandleCallData(msg.call_data());
41
- case srpc::Packet::kCallCancel:
42
- if (msg.call_cancel()) {
43
- return HandleCallCancel();
44
- }
45
- return Error::OK;
46
- default:
47
- return Error::OK;
37
+ case srpc::Packet::kCallStart:
38
+ return HandleCallStart(msg.call_start());
39
+ case srpc::Packet::kCallData:
40
+ return HandleCallData(msg.call_data());
41
+ case srpc::Packet::kCallCancel:
42
+ if (msg.call_cancel()) {
43
+ return HandleCallCancel();
44
+ }
45
+ return Error::OK;
46
+ default:
47
+ return Error::OK;
48
48
  }
49
49
  }
50
50
 
51
- Error ServerRPC::HandleCallStart(const srpc::CallStart& pkt) {
51
+ Error ServerRPC::HandleCallStart(const srpc::CallStart &pkt) {
52
52
  std::lock_guard<std::mutex> lock(mtx_);
53
53
 
54
54
  // process start: method and service
55
55
  if (!method_.empty() || !service_.empty()) {
56
- return Error::Completed; // call start must be sent only once
56
+ return Error::Completed; // call start must be sent only once
57
57
  }
58
58
  if (data_closed_) {
59
59
  return Error::Completed;
@@ -72,14 +72,14 @@ Error ServerRPC::HandleCallStart(const srpc::CallStart& pkt) {
72
72
  std::string method_id = method_;
73
73
  cv_.notify_all();
74
74
 
75
- invoke_thread_ = std::thread([this, service_id, method_id]() {
76
- InvokeRPC(service_id, method_id);
77
- });
75
+ invoke_thread_ = std::thread(
76
+ [this, service_id, method_id]() { InvokeRPC(service_id, method_id); });
78
77
 
79
78
  return Error::OK;
80
79
  }
81
80
 
82
- void ServerRPC::InvokeRPC(const std::string& service_id, const std::string& method_id) {
81
+ void ServerRPC::InvokeRPC(const std::string &service_id,
82
+ const std::string &method_id) {
83
83
  // On the server side, the writer is closed by invokeRPC.
84
84
  auto strm = NewMsgStream(this, [this]() { Cancel(); });
85
85
 
@@ -94,4 +94,4 @@ void ServerRPC::InvokeRPC(const std::string& service_id, const std::string& meth
94
94
  Cancel();
95
95
  }
96
96
 
97
- } // namespace starpc
97
+ } // namespace starpc
@@ -12,50 +12,52 @@
12
12
  namespace srpc {
13
13
  class Packet;
14
14
  class CallStart;
15
- } // namespace srpc
15
+ } // namespace srpc
16
16
 
17
17
  namespace starpc {
18
18
 
19
19
  // ServerRPC represents the server side of an on-going RPC call message stream.
20
20
  // Matches Go ServerRPC struct in server-rpc.go
21
21
  class ServerRPC : public CommonRPC, public MsgStreamRw {
22
- public:
22
+ public:
23
23
  // Constructor matching NewServerRPC in Go
24
- ServerRPC(Invoker* invoker, PacketWriter* writer);
24
+ ServerRPC(Invoker *invoker, PacketWriter *writer);
25
25
  ~ServerRPC() override;
26
26
 
27
27
  // HandlePacketData handles an incoming unparsed message packet.
28
28
  // Matches Go HandlePacketData in server-rpc.go
29
- Error HandlePacketData(const std::string& data);
29
+ Error HandlePacketData(const std::string &data);
30
30
 
31
31
  // HandlePacket handles an incoming parsed message packet.
32
32
  // Matches Go HandlePacket in server-rpc.go
33
- Error HandlePacket(const srpc::Packet& msg);
33
+ Error HandlePacket(const srpc::Packet &msg);
34
34
 
35
35
  // HandleCallStart handles the call start packet.
36
36
  // Matches Go HandleCallStart in server-rpc.go
37
- Error HandleCallStart(const srpc::CallStart& pkt);
37
+ Error HandleCallStart(const srpc::CallStart &pkt);
38
38
 
39
39
  // MsgStreamRw interface implementation
40
- Error ReadOne(std::string* out) override { return CommonRPC::ReadOne(out); }
41
- Error WriteCallData(const std::string& data, bool data_is_zero, bool complete, Error err) override {
40
+ Error ReadOne(std::string *out) override { return CommonRPC::ReadOne(out); }
41
+ Error WriteCallData(const std::string &data, bool data_is_zero, bool complete,
42
+ Error err) override {
42
43
  return CommonRPC::WriteCallData(data, data_is_zero, complete, err);
43
44
  }
44
45
  Error WriteCallCancel() override { return CommonRPC::WriteCallCancel(); }
45
46
 
46
- private:
47
+ private:
47
48
  // InvokeRPC invokes the RPC after CallStart is received.
48
49
  // Matches Go invokeRPC in server-rpc.go
49
- void InvokeRPC(const std::string& service_id, const std::string& method_id);
50
+ void InvokeRPC(const std::string &service_id, const std::string &method_id);
50
51
 
51
- Invoker* invoker_;
52
+ Invoker *invoker_;
52
53
  std::thread invoke_thread_;
53
54
  };
54
55
 
55
56
  // NewServerRPC constructs a new ServerRPC session.
56
57
  // Matches Go NewServerRPC function in server-rpc.go
57
- inline std::unique_ptr<ServerRPC> NewServerRPC(Invoker* invoker, PacketWriter* writer) {
58
+ inline std::unique_ptr<ServerRPC> NewServerRPC(Invoker *invoker,
59
+ PacketWriter *writer) {
58
60
  return std::make_unique<ServerRPC>(invoker, writer);
59
61
  }
60
62
 
61
- } // namespace starpc
63
+ } // namespace starpc
package/srpc/starpc.hpp CHANGED
@@ -3,8 +3,8 @@
3
3
  // Main header for starpc C++ library
4
4
  // Include this to get all starpc functionality
5
5
 
6
- #include "client.hpp"
7
6
  #include "client-rpc.hpp"
7
+ #include "client.hpp"
8
8
  #include "common-rpc.hpp"
9
9
  #include "errors.hpp"
10
10
  #include "handler.hpp"
package/srpc/stream.hpp CHANGED
@@ -8,18 +8,18 @@
8
8
 
9
9
  namespace starpc {
10
10
 
11
- // Stream is a handle to an on-going bi-directional or one-directional stream RPC handle.
12
- // Matches Go Stream interface in stream.go
11
+ // Stream is a handle to an on-going bi-directional or one-directional stream
12
+ // RPC handle. Matches Go Stream interface in stream.go
13
13
  class Stream {
14
- public:
14
+ public:
15
15
  virtual ~Stream() = default;
16
16
 
17
17
  // MsgSend sends the message to the remote.
18
- virtual Error MsgSend(const Message& msg) = 0;
18
+ virtual Error MsgSend(const Message &msg) = 0;
19
19
 
20
20
  // MsgRecv receives an incoming message from the remote.
21
21
  // Parses the message into the object at msg.
22
- virtual Error MsgRecv(Message* msg) = 0;
22
+ virtual Error MsgRecv(Message *msg) = 0;
23
23
 
24
24
  // CloseSend signals to the remote that we will no longer send any messages.
25
25
  virtual Error CloseSend() = 0;
@@ -28,32 +28,34 @@ class Stream {
28
28
  virtual Error Close() = 0;
29
29
  };
30
30
 
31
- // StreamWithClose wraps a Stream with a close function to call when Close is called.
32
- // Matches streamWithClose in stream.go
31
+ // StreamWithClose wraps a Stream with a close function to call when Close is
32
+ // called. Matches streamWithClose in stream.go
33
33
  class StreamWithClose : public Stream {
34
- public:
35
- StreamWithClose(Stream* inner, std::function<Error()> close_fn)
34
+ public:
35
+ StreamWithClose(Stream *inner, std::function<Error()> close_fn)
36
36
  : inner_(inner), close_fn_(std::move(close_fn)) {}
37
37
 
38
- Error MsgSend(const Message& msg) override { return inner_->MsgSend(msg); }
39
- Error MsgRecv(Message* msg) override { return inner_->MsgRecv(msg); }
38
+ Error MsgSend(const Message &msg) override { return inner_->MsgSend(msg); }
39
+ Error MsgRecv(Message *msg) override { return inner_->MsgRecv(msg); }
40
40
  Error CloseSend() override { return inner_->CloseSend(); }
41
41
 
42
42
  Error Close() override {
43
43
  Error err = inner_->Close();
44
44
  Error err2 = close_fn_();
45
- if (err != Error::OK) return err;
45
+ if (err != Error::OK)
46
+ return err;
46
47
  return err2;
47
48
  }
48
49
 
49
- private:
50
- Stream* inner_;
50
+ private:
51
+ Stream *inner_;
51
52
  std::function<Error()> close_fn_;
52
53
  };
53
54
 
54
55
  // NewStreamWithClose wraps a Stream with a close function.
55
- inline std::unique_ptr<Stream> NewStreamWithClose(Stream* strm, std::function<Error()> close_fn) {
56
+ inline std::unique_ptr<Stream>
57
+ NewStreamWithClose(Stream *strm, std::function<Error()> close_fn) {
56
58
  return std::make_unique<StreamWithClose>(strm, std::move(close_fn));
57
59
  }
58
60
 
59
- } // namespace starpc
61
+ } // namespace starpc
package/srpc/writer.hpp CHANGED
@@ -14,11 +14,11 @@ namespace starpc {
14
14
  // PacketWriter is the interface used to write messages to a PacketStream.
15
15
  // Matches Go interface in writer.go
16
16
  class PacketWriter {
17
- public:
17
+ public:
18
18
  virtual ~PacketWriter() = default;
19
19
 
20
20
  // WritePacket writes a packet to the remote.
21
- virtual Error WritePacket(const srpc::Packet& pkt) = 0;
21
+ virtual Error WritePacket(const srpc::Packet &pkt) = 0;
22
22
 
23
23
  // Close closes the writer.
24
24
  virtual Error Close() = 0;
@@ -27,31 +27,34 @@ class PacketWriter {
27
27
  // PacketWriterWithClose wraps a PacketWriter with an additional close function.
28
28
  // Matches packetWriterWithClose in writer.go
29
29
  class PacketWriterWithClose : public PacketWriter {
30
- public:
31
- PacketWriterWithClose(std::unique_ptr<PacketWriter> inner, std::function<Error()> close_fn)
30
+ public:
31
+ PacketWriterWithClose(std::unique_ptr<PacketWriter> inner,
32
+ std::function<Error()> close_fn)
32
33
  : inner_(std::move(inner)), close_fn_(std::move(close_fn)) {}
33
34
 
34
- Error WritePacket(const srpc::Packet& pkt) override {
35
+ Error WritePacket(const srpc::Packet &pkt) override {
35
36
  return inner_->WritePacket(pkt);
36
37
  }
37
38
 
38
39
  Error Close() override {
39
40
  Error err = inner_->Close();
40
41
  Error err2 = close_fn_();
41
- if (err != Error::OK) return err;
42
+ if (err != Error::OK)
43
+ return err;
42
44
  return err2;
43
45
  }
44
46
 
45
- private:
47
+ private:
46
48
  std::unique_ptr<PacketWriter> inner_;
47
49
  std::function<Error()> close_fn_;
48
50
  };
49
51
 
50
52
  // NewPacketWriterWithClose wraps a PacketWriter with a close function.
51
- inline std::unique_ptr<PacketWriter> NewPacketWriterWithClose(
52
- std::unique_ptr<PacketWriter> prw,
53
- std::function<Error()> close_fn) {
54
- return std::make_unique<PacketWriterWithClose>(std::move(prw), std::move(close_fn));
53
+ inline std::unique_ptr<PacketWriter>
54
+ NewPacketWriterWithClose(std::unique_ptr<PacketWriter> prw,
55
+ std::function<Error()> close_fn) {
56
+ return std::make_unique<PacketWriterWithClose>(std::move(prw),
57
+ std::move(close_fn));
55
58
  }
56
59
 
57
- } // namespace starpc
60
+ } // namespace starpc
package/echo/build.rs DELETED
@@ -1,15 +0,0 @@
1
- use std::io::Result;
2
- use std::path::PathBuf;
3
-
4
- fn main() -> Result<()> {
5
- let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
6
- // Use simplified proto without rpcstream dependency
7
- let proto_path = manifest_dir.join("echo_rust.proto");
8
-
9
- println!("cargo:rerun-if-changed={}", proto_path.display());
10
-
11
- starpc_build::configure()
12
- .compile_protos(&[proto_path], &[&manifest_dir])?;
13
-
14
- Ok(())
15
- }
package/srpc/build.rs DELETED
@@ -1,15 +0,0 @@
1
- use std::io::Result;
2
- use std::path::PathBuf;
3
-
4
- fn main() -> Result<()> {
5
- // Get the path to the proto file in the same directory.
6
- let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
7
- let proto_path = manifest_dir.join("rpcproto.proto");
8
-
9
- println!("cargo:rerun-if-changed={}", proto_path.display());
10
-
11
- prost_build::Config::new()
12
- .compile_protos(&[proto_path], &[&manifest_dir])?;
13
-
14
- Ok(())
15
- }
package/srpc/proto/mod.rs DELETED
@@ -1,10 +0,0 @@
1
- //! Generated protocol buffer types for starpc.
2
- //!
3
- //! This module contains the Packet, CallStart, CallData types generated from
4
- //! rpcproto.proto. These types define the wire protocol for starpc.
5
-
6
- // Include the generated protobuf types.
7
- include!(concat!(env!("OUT_DIR"), "/srpc.rs"));
8
-
9
- // Re-export commonly used items.
10
- pub use self::packet::Body;