github.com/aavshr/aws-sdk-go@v1.41.3/private/model/api/eventstream_tmpl_writer.go (about) 1 //go:build codegen 2 // +build codegen 3 4 package api 5 6 import "text/template" 7 8 var eventStreamShapeWriterTmpl = template.Must(template.New("eventStreamShapeWriterTmpl"). 9 Funcs(template.FuncMap{}). 10 Parse(` 11 {{- $es := $.EventStream }} 12 13 // {{ $es.StreamWriterAPIName }} provides the interface for writing events to the stream. 14 // The default implementation for this interface will be {{ $.ShapeName }}. 15 // 16 // The writer's Close method must allow multiple concurrent calls. 17 // 18 // These events are: 19 // {{ range $_, $event := $es.Events }} 20 // * {{ $event.Shape.ShapeName }} 21 {{- end }} 22 type {{ $es.StreamWriterAPIName }} interface { 23 // Sends writes events to the stream blocking until the event has been 24 // written. An error is returned if the write fails. 25 Send(aws.Context, {{ $es.EventGroupName }}) error 26 27 // Close will stop the writer writing to the event stream. 28 Close() error 29 30 // Returns any error that has occurred while writing to the event stream. 31 Err() error 32 } 33 34 type {{ $es.StreamWriterImplName }} struct { 35 *eventstreamapi.StreamWriter 36 } 37 38 func (w *{{ $es.StreamWriterImplName }}) Send(ctx aws.Context, event {{ $es.EventGroupName }}) error { 39 return w.StreamWriter.Send(ctx, event) 40 } 41 42 func {{ $es.StreamEventTypeGetterName }}(event eventstreamapi.Marshaler) (string, error) { 43 switch event.(type) { 44 {{- range $_, $event := $es.Events }} 45 case *{{ $event.Shape.ShapeName }}: 46 return {{ printf "%q" $event.Name }}, nil 47 {{- end }} 48 {{- range $_, $event := $es.Exceptions }} 49 case *{{ $event.Shape.ShapeName }}: 50 return {{ printf "%q" $event.Name }}, nil 51 {{- end }} 52 default: 53 return "", awserr.New( 54 request.ErrCodeSerialization, 55 fmt.Sprintf("unknown event type, %T, for {{ $es.Name }}", event), 56 nil, 57 ) 58 } 59 } 60 `))