Documentation ¶
Index ¶
- Constants
- func AddGetEnvHelper(f *File)
- func AddIfErrorGuard(scope *Group, statement *Statement, errId string, code Code)
- func AssignResultsToErr(err *Statement, respId string, fields parser.ResultFields) (statement *Statement)
- func ClientMethod(fn parser.Function, info *PackageInfo, body ClientMethodBody, f *File)
- func ClientReceiverType(receiver parser.Field, constructor OptionalConstructor, info *PackageInfo) (typeDecl, constructorDecl Code)
- func CreateArgsList(args []parser.Field, transform func(*Statement, parser.Field) *Statement, ...) func(*Group)
- func CreateArgsListFunc(args []parser.Field, params ...string) func(*Group)
- func CreateCombinedHandlerArgs(fn parser.Function, info *PackageInfo) (fields []types.Field)
- func CreateReqRespTypes(info *PackageInfo, f *File)
- func CreateSignatureFromArgs(args []parser.Field, info *PackageInfo, params ...string) func(*Group)
- func CreateTypeAliases(info *PackageInfo, f *File)
- func DefaultRpcHandler(info *PackageInfo, f *File, fn parser.Function)
- func ForEachFunction(info *PackageInfo, skipInit bool, cb func(parser.Function))
- func GetMethodTypes(fn parser.Function) (handler, request, response string)
- func GetReceiverVarName(receiverTypeName string) string
- func GetResourceName(info *PackageInfo) string
- func GetRpcHandlerArgsList(request, response string) *Statement
- func GracefulShutdown(info *PackageInfo, g *Group, f *File)
- func HasReceiver(fn parser.Function) bool
- func HasTopLevelReceiver(fn parser.Function, info *PackageInfo) bool
- func ID(name ...string) string
- func MakeForEachReceiver(info *PackageInfo, cb ForEachRecCb) (receiversProcessed map[string]parser.Field)
- func MakeHandlerWrapper(f *File, handlerBody func(g *Group, resource string), info *PackageInfo, ...)
- func MakeInitService(info *PackageInfo, main *Group)
- func MakeOriginalCall(info *PackageInfo, fn parser.Function, g *Group, deps DepsMap, ...)
- func MakeReceiversForHandlers(info *PackageInfo, g *Group) (receiversCreated map[string]parser.Field)
- func MakeStartRPCServer(info *PackageInfo, cb StartRPCServerCb, main *Group, f *File)
- func MakeStartServerInit(info *PackageInfo, g *Group)
- func ReqRecName(fn parser.Function) string
- func TemplateClient(info *PackageInfo, f *File, body ClientMethodBody)
- func TemplateRpcServer(info *PackageInfo, f *File, config TemplateServerConfig)
- func TrimPrefix(str string) string
- func TypeDeclFormFields(name string, args []types.Field, info *PackageInfo) Code
- type ClientMethodBody
- type ClientMethodIds
- type Constructor
- type DepsMap
- type Field
- type ForEachRecCb
- type IfErrorGuard
- type Module
- type OptionalConstructor
- type Package
- type PackageInfo
- func (info PackageInfo) GetConstructor(field types.Field) (constructor Constructor, ok bool)
- func (info PackageInfo) GetFunction(receiver types.Field, functionName string) (function parser.Function, ok bool)
- func (info PackageInfo) GetServicePath() string
- func (info PackageInfo) IsReceiverType(field types.Field) bool
- func (info *PackageInfo) SetServicePath(path string)
- type StartRPCServerCb
- type TemplateServerConfig
Constants ¶
const GetEnvHelper = "getEnvHelper"
GetEnvHelper global identifier for getEnv helper function.
Variables ¶
This section is empty.
Functions ¶
func AddGetEnvHelper ¶
func AddGetEnvHelper(f *File)
AddGetEnvHelper creates heper function to get environment variable.
func AddIfErrorGuard ¶
func AddIfErrorGuard(scope *Group, statement *Statement, errId string, code Code)
AddIfErrorGuard adds to scope error check.
func AssignResultsToErr ¶
func AssignResultsToErr(err *Statement, respId string, fields parser.ResultFields) (statement *Statement)
AssignResultsToErr assign response error to err statement.
func ClientMethod ¶
func ClientMethod(fn parser.Function, info *PackageInfo, body ClientMethodBody, f *File)
ClientMethod creates client method for given function.
func ClientReceiverType ¶
func ClientReceiverType(receiver parser.Field, constructor OptionalConstructor, info *PackageInfo) ( typeDecl, constructorDecl Code)
ClientReceiverType creates constructor and client-side receiver type. Type contains only fields from constructor arguments. Contructor match original one by signature but only initializes recevier fieds. Example: type Foo{...}; NewFoo(x int) -> type Foo { x int }; NewFoo(x int)
func CreateArgsList ¶
func CreateArgsList( args []parser.Field, transform func(*Statement, parser.Field) *Statement, params ...string, ) func(*Group)
CreateArgsList creates list from parser.Field array. Transform function is used to modify each element list. Optional param 1 is used to specify prefix for each element. Optional param 2 is used to specify allowed argument types (format: type1,type2,).
func CreateArgsListFunc ¶
CreateArgsListFunc creates list from Fields (see CreateArgListFunc).
func CreateCombinedHandlerArgs ¶
func CreateCombinedHandlerArgs(fn parser.Function, info *PackageInfo) (fields []types.Field)
func CreateReqRespTypes ¶
func CreateReqRespTypes(info *PackageInfo, f *File)
CreateReqRespTypes creates request response types for each method.
func CreateSignatureFromArgs ¶
func CreateSignatureFromArgs(args []parser.Field, info *PackageInfo, params ...string) func(*Group)
CreateSignatureFromArgs creates signature from Fields (see CreateArgListFunc).
func CreateTypeAliases ¶
func CreateTypeAliases(info *PackageInfo, f *File)
CreateTypeAliases creates aliases to types that found in functions signatures.
func DefaultRpcHandler ¶
func DefaultRpcHandler(info *PackageInfo, f *File, fn parser.Function)
func ForEachFunction ¶
func ForEachFunction(info *PackageInfo, skipInit bool, cb func(parser.Function))
ForEachFunction executes callback for each function in package expecept special Stop function that shoudn't be externaly exposed.
func GetMethodTypes ¶
TODO move to PackageInfo
func GetReceiverVarName ¶
func GetResourceName ¶
func GetResourceName(info *PackageInfo) string
func GetRpcHandlerArgsList ¶
func GetRpcHandlerArgsList(request, response string) *Statement
GetRpcHandlerArgsList creates args list for rpc handler wrapper.
func GracefulShutdown ¶
func GracefulShutdown(info *PackageInfo, g *Group, f *File)
GracefulShutdown calls Stop methods on receivers before program termination.
func HasReceiver ¶
func HasTopLevelReceiver ¶
func HasTopLevelReceiver(fn parser.Function, info *PackageInfo) bool
HasTopLevelReceiver returns false if function has other receiver as argumenet.
func MakeForEachReceiver ¶
func MakeForEachReceiver( info *PackageInfo, cb ForEachRecCb, ) (receiversProcessed map[string]parser.Field)
TODO save receivers during PackageInfo initialization MakeForEachReceiver executes callback for each receiver.
func MakeHandlerWrapper ¶
func MakeHandlerWrapper( f *File, handlerBody func(g *Group, resource string), info *PackageInfo, fn parser.Function, args, returns *Statement, )
HandlerWrapper creates method wrapper to inject dependencies (top level receiver).
func MakeInitService ¶
func MakeInitService(info *PackageInfo, main *Group)
func MakeOriginalCall ¶
func MakeOriginalCall( info *PackageInfo, fn parser.Function, g *Group, deps DepsMap, errGuard IfErrorGuard, resourceInstance string, )
MakeOriginalCall creates dependencies and make original method call (response object must be created)
func MakeReceiversForHandlers ¶
func MakeReceiversForHandlers(info *PackageInfo, g *Group) (receiversCreated map[string]parser.Field)
MakeReceiversForHandlers cerates instances for each top level receiver.
func MakeStartRPCServer ¶
func MakeStartRPCServer(info *PackageInfo, cb StartRPCServerCb, main *Group, f *File)
MakeStartRPCServer creates server initialization method.
func MakeStartServerInit ¶
func MakeStartServerInit(info *PackageInfo, g *Group)
MakeStartServerInit creates port and address initialization (from env or random).
func ReqRecName ¶
func TemplateClient ¶
func TemplateClient(info *PackageInfo, f *File, body ClientMethodBody)
TemplateServer creates template module for RPC client.
func TemplateRpcServer ¶
func TemplateRpcServer(info *PackageInfo, f *File, config TemplateServerConfig)
TemplateRpcServer creates template module for RPC server.
func TrimPrefix ¶
func TypeDeclFormFields ¶
func TypeDeclFormFields(name string, args []types.Field, info *PackageInfo) Code
TODO replace to to Struct type TypeDeclFormFields creates type declaration from []types.Field
Types ¶
type ClientMethodBody ¶
type ClientMethodBody = func(ids ClientMethodIds, g *Group)
ClientMethodBody is used to insert specific code to client method template.
type ClientMethodIds ¶
type ClientMethodIds struct { Request string //Request variable identifier Response string //Response valiable identifier Method string //RPC Method string Resource string //RPC Resource string Err string //Error variable identifer }
ClientMethodIds contains identifiers that available in client method template.
type Constructor ¶
func NewTypeConstructor ¶
func NewTypeConstructor(fn parser.Function, rec parser.Field) (constructor *Constructor)
type ForEachRecCb ¶
type ForEachRecCb = func(receiver parser.Field, constructor OptionalConstructor)
type IfErrorGuard ¶
type IfErrorGuard = func(scope *Group, statement *Statement)
type OptionalConstructor ¶
type OptionalConstructor = func(func(Constructor), ...func())
func NewOptionalConstructor ¶
func NewOptionalConstructor(constructors ...Constructor) OptionalConstructor
type Package ¶
func GetMainPackage ¶
type PackageInfo ¶
type PackageInfo struct { Functions []parser.Function Constructors map[string]Constructor PackageName string IsInitService bool IsStopService bool Service *types.Service ModulePath string // contains filtered or unexported fields }
func NewPackageInfoFromParser ¶
func NewPackageInfoFromParser(p *parser.Parser) *PackageInfo
func (PackageInfo) GetConstructor ¶
func (info PackageInfo) GetConstructor(field types.Field) (constructor Constructor, ok bool)
func (PackageInfo) GetFunction ¶
func (info PackageInfo) GetFunction(receiver types.Field, functionName string) (function parser.Function, ok bool)
check if receiver receiver have function with specified name
func (PackageInfo) GetServicePath ¶
func (info PackageInfo) GetServicePath() string
func (PackageInfo) IsReceiverType ¶
func (info PackageInfo) IsReceiverType(field types.Field) bool
TODO check receiver taht does not have constructors
func (*PackageInfo) SetServicePath ¶
func (info *PackageInfo) SetServicePath(path string)
type StartRPCServerCb ¶
type StartRPCServerCb = func(g *Group, resource, instance string)
StartRPCServerCb is used to insert specific code to server init template.
type TemplateServerConfig ¶
type TemplateServerConfig struct { GenResourceScope StartRPCServerCb GenHandler func(info *PackageInfo, f *File, fn parser.Function) }