-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(core): add ADR 033 (inter-module communication) Client interface (…
…#13631) Co-authored-by: Marko <[email protected]>
- Loading branch information
1 parent
ad08ec4
commit a19c3a6
Showing
1 changed file
with
32 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
package intermodule | ||
|
||
import ( | ||
"context" | ||
|
||
"google.golang.org/grpc" | ||
) | ||
|
||
// Client is an inter-module client as specified in ADR-033. It | ||
// allows one module to send msg's and queries to other modules provided | ||
// that the request is valid and can be properly authenticated. | ||
type Client interface { | ||
grpc.ClientConnInterface | ||
|
||
// InvokerByMethod resolves an invoker for the provided method or returns an error. | ||
InvokerByMethod(method string) (Invoker, error) | ||
|
||
// InvokerByRequest resolves an invoker for the provided request type or returns an error. | ||
// This only works for Msg's as they are routed based on type name in transactions already. | ||
// For queries use InvokerByMethod instead. | ||
InvokerByRequest(request any) (Invoker, error) | ||
|
||
// DerivedClient returns an inter-module client for the ADR-028 derived | ||
// module address for the provided key. | ||
DerivedClient(key []byte) Client | ||
|
||
// Address is the ADR-028 address of this client against which messages will be authenticated. | ||
Address() []byte | ||
} | ||
|
||
// Invoker is an inter-module invoker that has already been resolved to a specific method route. | ||
type Invoker func(ctx context.Context, request any, opts ...grpc.CallOption) (res any, err error) |