// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may // not use this file except in compliance with the License. A copy of the // License is located at // // http://aws.amazon.com/apache2.0/ // // or in the "license" file accompanying this file. This file is distributed // on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either // express or implied. See the License for the specific language governing // permissions and limitations under the License. // Package tcsclient wraps the generated aws-sdk-go client to provide marshalling // and unmarshalling of data over a websocket connection in the format expected // by TCS. It allows for bidirectional communication and acts as both a // client-and-server in terms of requests, but only as a client in terms of // connecting. package tcsclient import ( "github.com/aws/amazon-ecs-agent/ecs-agent/tcs/model/ecstcs" "github.com/aws/amazon-ecs-agent/ecs-agent/wsclient" ) var tcsTypes []interface{} func init() { // This list is currently *manually updated* and assumes that the generated // struct type-names within the package *exactly match* the type sent by ACS/TCS // (true so far; careful with inflections) // TODO, this list should be autogenerated // I couldn't figure out how to get a list of all structs in a package via // reflection, but that would solve this. The alternative is to either parse // the .json model or the generated struct names. tcsTypes = []interface{}{ ecstcs.StopTelemetrySessionMessage{}, ecstcs.AckPublishMetric{}, ecstcs.HeartbeatMessage{}, ecstcs.PublishMetricsRequest{}, ecstcs.PublishHealthRequest{}, ecstcs.AckPublishHealth{}, ecstcs.StartTelemetrySessionRequest{}, ecstcs.ServerException{}, ecstcs.BadRequestException{}, ecstcs.ResourceValidationException{}, ecstcs.InvalidParameterException{}, ecstcs.AckPublishInstanceStatus{}, ecstcs.PublishInstanceStatusRequest{}, } } func NewTCSDecoder() wsclient.TypeDecoder { return wsclient.BuildTypeDecoder(tcsTypes) }