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