// Copyright 2017 Pilosa Corp. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package mock import "sync" type ReadCloser struct { ReadFunc func(p []byte) (int, error) CloseFunc func() error once sync.Once } func (rc *ReadCloser) Read(p []byte) (int, error) { return rc.ReadFunc(p) } func (rc *ReadCloser) Close() error { var err error = nil rc.once.Do(func() { err = rc.CloseFunc() }) return err }