func ServeTaskHTTPEndpoint(credentialsManager credentials.Manager,
	state dockerstate.TaskEngineState,
	ecsClient api.ECSClient,
	containerInstanceArn string,
	cfg *config.Config,
	statsEngine stats.Engine,
	availabilityZone string) {
	// Create and initialize the audit log
	// TODO Use seelog's programmatic configuration instead of xml.
	logger, err := seelog.LoggerFromConfigAsString(audit.AuditLoggerConfig(cfg))
	if err != nil {
		seelog.Errorf("Error initializing the audit log: %v", err)
		// If the logger cannot be initialized, use the provided dummy seelog.LoggerInterface, seelog.Disabled.
		logger = seelog.Disabled
	}

	auditLogger := audit.NewAuditLog(containerInstanceArn, cfg, logger)

	server := taskServerSetup(credentialsManager, auditLogger, state, ecsClient, cfg.Cluster, statsEngine,
		cfg.TaskMetadataSteadyStateRate, cfg.TaskMetadataBurstRate, availabilityZone, containerInstanceArn)

	for {
		retry.RetryWithBackoff(retry.NewExponentialBackoff(time.Second, time.Minute, 0.2, 2), func() error {
			// TODO, make this cancellable and use the passed in context;
			err := server.ListenAndServe()
			if err != nil {
				seelog.Errorf("Error running http api: %v", err)
			}
			return err
		})
	}
}
func ServeTaskHTTPEndpoint(credentialsManager credentials.Manager,
	state dockerstate.TaskEngineState,
	ecsClient api.ECSClient,
	containerInstanceArn string,
	cfg *config.Config,
	statsEngine stats.Engine,
	availabilityZone string) {
	
	
	logger, err := seelog.LoggerFromConfigAsString(audit.AuditLoggerConfig(cfg))
	if err != nil {
		seelog.Errorf("Error initializing the audit log: %v", err)
		
		logger = seelog.Disabled
	}

	auditLogger := audit.NewAuditLog(containerInstanceArn, cfg, logger)

	server := taskServerSetup(credentialsManager, auditLogger, state, ecsClient, cfg.Cluster, statsEngine,
		cfg.TaskMetadataSteadyStateRate, cfg.TaskMetadataBurstRate, availabilityZone, containerInstanceArn)

	for {
		retry.RetryWithBackoff(retry.NewExponentialBackoff(time.Second, time.Minute, 0.2, 2), func() error {
			
			err := server.ListenAndServe()
			if err != nil {
				seelog.Errorf("Error running http api: %v", err)
			}
			return err
		})
	}
}
func ServeTaskHTTPEndpoint ( credentialsManager credentials . Manager , state dockerstate . TaskEngineState , ecsClient api . ECSClient , containerInstanceArn string , cfg * config . Config , statsEngine stats . Engine , availabilityZone string ) { // Create and initialize the audit log // TODO Use seelog's programmatic configuration instead of xml. logger , err := seelog . LoggerFromConfigAsString ( audit . AuditLoggerConfig ( cfg ) ) if err != nil { seelog . Errorf ( " " , err ) // If the logger cannot be initialized, use the provided dummy seelog.LoggerInterface, seelog.Disabled. logger = seelog . Disabled } auditLogger := audit . NewAuditLog ( containerInstanceArn , cfg , logger ) server := taskServerSetup ( credentialsManager , auditLogger , state , ecsClient , cfg . Cluster , statsEngine , cfg . TaskMetadataSteadyStateRate , cfg . TaskMetadataBurstRate , availabilityZone , containerInstanceArn ) for { retry . RetryWithBackoff ( retry . NewExponentialBackoff ( time . Second , time . Minute , 0.2 , 2 ) , func ( ) error { // TODO, make this cancellable and use the passed in context; err := server . ListenAndServe ( ) if err != nil { seelog . Errorf ( " " , err ) } return err } ) } }
// ServeTaskHTTPEndpoint serves task/container metadata, task/container stats, and IAM Role Credentials
// for tasks being managed by the agent.
ServeTaskHTTPEndpoint serves task / container metadata task / container stats and IAM Role Credentials for tasks being managed by the agent .