github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/imagebuilder/rpcd/api.go (about) 1 package rpcd 2 3 import ( 4 "io" 5 6 "github.com/Cloud-Foundations/Dominator/imagebuilder/builder" 7 "github.com/Cloud-Foundations/Dominator/lib/log" 8 "github.com/Cloud-Foundations/Dominator/lib/srpc" 9 "github.com/Cloud-Foundations/Dominator/lib/srpc/serverutil" 10 ) 11 12 type srpcType struct { 13 builder *builder.Builder 14 logger log.Logger 15 *serverutil.PerUserMethodLimiter 16 } 17 18 type htmlWriter srpcType 19 20 func (hw *htmlWriter) WriteHtml(writer io.Writer) { 21 hw.writeHtml(writer) 22 } 23 24 func Setup(builder *builder.Builder, logger log.Logger) (*htmlWriter, error) { 25 srpcObj := &srpcType{ 26 builder: builder, 27 logger: logger, 28 PerUserMethodLimiter: serverutil.NewPerUserMethodLimiter( 29 map[string]uint{ 30 "BuildImage": 1, 31 }), 32 } 33 srpc.RegisterNameWithOptions("Imaginator", srpcObj, 34 srpc.ReceiverOptions{ 35 PublicMethods: []string{ 36 "BuildImage", 37 }}) 38 return (*htmlWriter)(srpcObj), nil 39 }