// +build windows

/*
 This is the Windows driver for containers.

 TODO Windows: It is currently a placeholder to allow compilation of the
 daemon. Future PRs will have an implementation of this driver.
*/

package windows

import (
	"fmt"

	"github.com/docker/docker/daemon/execdriver"
)

const (
	DriverName = "Windows"
	Version    = "Placeholder"
)

type activeContainer struct {
	command *execdriver.Command
}

type driver struct {
	root     string
	initPath string
}

type info struct {
	ID     string
	driver *driver
}

func NewDriver(root, initPath string) (*driver, error) {
	return &driver{
		root:     root,
		initPath: initPath,
	}, nil
}

func (d *driver) Run(c *execdriver.Command, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (execdriver.ExitStatus, error) {
	return execdriver.ExitStatus{ExitCode: 0}, nil
}

func (d *driver) Terminate(p *execdriver.Command) error {
	return nil
}

func (d *driver) Kill(p *execdriver.Command, sig int) error {
	return nil
}

func kill(ID string, PID int) error {
	return nil
}

func (d *driver) Pause(c *execdriver.Command) error {
	return fmt.Errorf("Windows: Containers cannot be paused")
}

func (d *driver) Unpause(c *execdriver.Command) error {
	return fmt.Errorf("Windows: Containers cannot be paused")
}

func (i *info) IsRunning() bool {
	return false
}

func (d *driver) Info(id string) execdriver.Info {
	return &info{
		ID:     id,
		driver: d,
	}
}

func (d *driver) Name() string {
	return fmt.Sprintf("%s Date %s", DriverName, Version)
}

func (d *driver) GetPidsForContainer(id string) ([]int, error) {
	return nil, fmt.Errorf("GetPidsForContainer: GetPidsForContainer() not implemented")
}

func (d *driver) Clean(id string) error {
	return nil
}

func (d *driver) Stats(id string) (*execdriver.ResourceStats, error) {
	return nil, fmt.Errorf("Windows: Stats not implemented")
}

func (d *driver) Exec(c *execdriver.Command, processConfig *execdriver.ProcessConfig, pipes *execdriver.Pipes, startCallback execdriver.StartCallback) (int, error) {
	return 0, nil
}