dotcloud/docker

View on GitHub
daemon/logger/proxy.go

Summary

Maintainability
A
0 mins
Test Coverage
package logger // import "github.com/docker/docker/daemon/logger"

import (
    "errors"
    "io"
)

type client interface {
    Call(string, interface{}, interface{}) error
    Stream(string, interface{}) (io.ReadCloser, error)
}

type logPluginProxy struct {
    client
}

type logPluginProxyStartLoggingRequest struct {
    File string
    Info Info
}

type logPluginProxyStartLoggingResponse struct {
    Err string
}

func (pp *logPluginProxy) StartLogging(file string, info Info) (err error) {
    var (
        req logPluginProxyStartLoggingRequest
        ret logPluginProxyStartLoggingResponse
    )

    req.File = file
    req.Info = info
    if err = pp.Call("LogDriver.StartLogging", req, &ret); err != nil {
        return
    }

    if ret.Err != "" {
        err = errors.New(ret.Err)
    }

    return
}

type logPluginProxyStopLoggingRequest struct {
    File string
}

type logPluginProxyStopLoggingResponse struct {
    Err string
}

func (pp *logPluginProxy) StopLogging(file string) (err error) {
    var (
        req logPluginProxyStopLoggingRequest
        ret logPluginProxyStopLoggingResponse
    )

    req.File = file
    if err = pp.Call("LogDriver.StopLogging", req, &ret); err != nil {
        return
    }

    if ret.Err != "" {
        err = errors.New(ret.Err)
    }

    return
}

type logPluginProxyCapabilitiesResponse struct {
    Cap Capability
    Err string
}

func (pp *logPluginProxy) Capabilities() (cap Capability, err error) {
    var ret logPluginProxyCapabilitiesResponse

    if err = pp.Call("LogDriver.Capabilities", nil, &ret); err != nil {
        return
    }

    cap = ret.Cap

    if ret.Err != "" {
        err = errors.New(ret.Err)
    }

    return
}

type logPluginProxyReadLogsRequest struct {
    Info   Info
    Config ReadConfig
}

func (pp *logPluginProxy) ReadLogs(info Info, config ReadConfig) (stream io.ReadCloser, err error) {
    var req logPluginProxyReadLogsRequest

    req.Info = info
    req.Config = config
    return pp.Stream("LogDriver.ReadLogs", req)
}