agent/engine/docker_task_engine.go
func NewDockerTaskEngine(cfg *config.Config,
	client dockerapi.DockerClient,
	credentialsManager credentials.Manager,
	containerChangeEventStream *eventstream.EventStream,
	imageManager ImageManager,
	state dockerstate.TaskEngineState,
	metadataManager containermetadata.Manager,
	resourceFields *taskresource.ResourceFields) *DockerTaskEngine {
	dockerTaskEngine := &DockerTaskEngine{
		cfg:    cfg,
		client: client,
		saver:  statemanager.NewNoopStateManager(),

		state:         state,
		managedTasks:  make(map[string]*managedTask),
		taskStopGroup: utilsync.NewSequentialWaitGroup(),

		stateChangeEvents: make(chan statechange.Event),

		credentialsManager: credentialsManager,

		containerChangeEventStream: containerChangeEventStream,
		imageManager:               imageManager,
		cniClient: ecscni.NewClient(&ecscni.Config{
			PluginsPath:            cfg.CNIPluginsPath,
			MinSupportedCNIVersion: config.DefaultMinSupportedCNIVersion,
		}),

		metadataManager:             metadataManager,
		taskSteadyStatePollInterval: defaultTaskSteadyStatePollInterval,
		resourceFields:              resourceFields,
	}

	dockerTaskEngine.initializeContainerStatusToTransitionFunction()

	return dockerTaskEngine
}
func NewDockerTaskEngine(cfg *config.Config,
	client dockerapi.DockerClient,
	credentialsManager credentials.Manager,
	containerChangeEventStream *eventstream.EventStream,
	imageManager ImageManager,
	state dockerstate.TaskEngineState,
	metadataManager containermetadata.Manager,
	resourceFields *taskresource.ResourceFields) *DockerTaskEngine {
	dockerTaskEngine := &DockerTaskEngine{
		cfg:    cfg,
		client: client,
		saver:  statemanager.NewNoopStateManager(),

		state:         state,
		managedTasks:  make(map[string]*managedTask),
		taskStopGroup: utilsync.NewSequentialWaitGroup(),

		stateChangeEvents: make(chan statechange.Event),

		credentialsManager: credentialsManager,

		containerChangeEventStream: containerChangeEventStream,
		imageManager:               imageManager,
		cniClient: ecscni.NewClient(&ecscni.Config{
			PluginsPath:            cfg.CNIPluginsPath,
			MinSupportedCNIVersion: config.DefaultMinSupportedCNIVersion,
		}),

		metadataManager:             metadataManager,
		taskSteadyStatePollInterval: defaultTaskSteadyStatePollInterval,
		resourceFields:              resourceFields,
	}

	dockerTaskEngine.initializeContainerStatusToTransitionFunction()

	return dockerTaskEngine
}
func NewDockerTaskEngine ( cfg * config . Config , client dockerapi . DockerClient , credentialsManager credentials . Manager , containerChangeEventStream * eventstream . EventStream , imageManager ImageManager , state dockerstate . TaskEngineState , metadataManager containermetadata . Manager , resourceFields * taskresource . ResourceFields ) * DockerTaskEngine { dockerTaskEngine := & DockerTaskEngine { cfg : cfg , client : client , saver : statemanager . NewNoopStateManager ( ) , state : state , managedTasks : make ( map [ string ] * managedTask ) , taskStopGroup : utilsync . NewSequentialWaitGroup ( ) , stateChangeEvents : make ( chan statechange . Event ) , credentialsManager : credentialsManager , containerChangeEventStream : containerChangeEventStream , imageManager : imageManager , cniClient : ecscni . NewClient ( & ecscni . Config { PluginsPath : cfg . CNIPluginsPath , MinSupportedCNIVersion : config . DefaultMinSupportedCNIVersion , } ) , metadataManager : metadataManager , taskSteadyStatePollInterval : defaultTaskSteadyStatePollInterval , resourceFields : resourceFields , } dockerTaskEngine . initializeContainerStatusToTransitionFunction ( ) return dockerTaskEngine }
// NewDockerTaskEngine returns a created, but uninitialized, DockerTaskEngine.
// The distinction between created and initialized is that when created it may
// be serialized/deserialized, but it will not communicate with docker until it
// is also initialized.
NewDockerTaskEngine returns a created but uninitialized DockerTaskEngine . The distinction between created and initialized is that when created it may be serialized / deserialized but it will not communicate with docker until it is also initialized .