packages/@jsii/go-runtime/jsii-runtime-go/internal/kernel/request-response-markers.go (18 lines of code) (raw):
package kernel
// kernelRequester allows creating a union of kernelRequester and kernelResponder
// types by defining private method implemented by a private custom type, which
// is embedded in all relevant types.
type kernelRequester interface {
// isRequest is a marker method that is intended to ensure no external type
// can implement this interface.
isRequest() kernelBrand
}
// kernelRequest is the standard implementation for kernelRequester.
type kernelRequest struct {
API string `json:"api"`
}
func (r kernelRequest) isRequest() kernelBrand {
return kernelBrand{}
}
// kernelResponder allows creating a union of kernelResponder and kernelRequester
// types by defining private method implemented by a private custom type, which
// is embedded in all relevant types.
type kernelResponder interface {
// isResponse is a marker method that is intended to ensure no external type
// can implement this interface.
isResponse() kernelBrand
}
// kernelResponse is a 0-width marker struc tembedded to make another type be
// usable as a kernelResponder.
type kernelResponse struct{}
func (r kernelResponse) isResponse() kernelBrand {
return kernelBrand{}
}
// kernelBrand is a private type used to ensure the kernelRequester and
// kernelResponder cannot be implemented outside of this package.
type kernelBrand struct{}