turbolink icon indicating copy to clipboard operation
turbolink copied to clipboard

Referencing a message from another proto file in an rpc causes missing imports in generated files

Open ebuxk opened this issue 1 year ago • 1 comments

When generating the below common.proto & game-broken.proto, Private/SGame/GameContext.cpp has compilation issues.

GameContext.cpp(19): Error C2665 : 'TURBOLINK_TO_GRPC': no overloaded function could convert all the argument types

I found 2 ways to work around this:

  1. Editing the generated files. Manually add the include for /SCommon/CommonMarshaling.h to /SGame/GameContext.cpp.
  2. Wrapping the Player message from common.proto with a message defined inside game.proto. See game-workaround.proto below.

common.proto

package common;
message Player {
  uint64 id = 1;
  string username = 2;
  string auth_key = 3;
}

game-broken.proto

package game;
import "common.proto";

service TestTurbo {
  rpc TestTurboFunc(common.Player) returns (common.Player);
}

game-workaround.proto

package game;
import "common.proto";
message TestTurboFuncMessage {
    common.Player player = 1;
}
service TestTurbo {
  rpc TestTurboFunc(TestTurboFuncMessage) returns (TestTurboFuncMessage);
}

Thank you for all your time and focus on turbolink. 👍

ebuxk avatar Feb 26 '24 17:02 ebuxk

This isn't an issue with this repo, it's an issue with the protogen. You can check out the PR #11 for this fix.

WilSimpson avatar Apr 07 '24 21:04 WilSimpson