| package logger | |
| import ( | |
| "errors" | |
| "io" | |
| ) | |
| type client interface { | |
| Call(string, any, any) error | |
| Stream(string, any) (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 err | |
| } | |
| if ret.Err != "" { | |
| return errors.New(ret.Err) | |
| } | |
| return nil | |
| } | |
| 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 err | |
| } | |
| if ret.Err != "" { | |
| return errors.New(ret.Err) | |
| } | |
| return nil | |
| } | |
| type logPluginProxyCapabilitiesResponse struct { | |
| Cap Capability | |
| Err string | |
| } | |
| func (pp *logPluginProxy) Capabilities() (Capability, error) { | |
| var ret logPluginProxyCapabilitiesResponse | |
| if err := pp.Call("LogDriver.Capabilities", nil, &ret); err != nil { | |
| return Capability{}, err | |
| } | |
| if ret.Err != "" { | |
| return Capability{}, errors.New(ret.Err) | |
| } | |
| return ret.Cap, nil | |
| } | |
| type logPluginProxyReadLogsRequest struct { | |
| Info Info | |
| Config ReadConfig | |
| } | |
| func (pp *logPluginProxy) ReadLogs(info Info, config ReadConfig) (stream io.ReadCloser, _ error) { | |
| return pp.Stream("LogDriver.ReadLogs", logPluginProxyReadLogsRequest{ | |
| Info: info, | |
| Config: config, | |
| }) | |
| } |