github.com/cloudwego/hertz@v0.9.3/pkg/common/test/mock/writer.go (about) 1 /* 2 * Copyright 2023 CloudWeGo Authors 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package mock 18 19 import "bytes" 20 21 type ExtWriter struct { 22 tmp []byte 23 Buf *bytes.Buffer 24 IsFinal *bool 25 } 26 27 func (m *ExtWriter) Write(p []byte) (n int, err error) { 28 m.tmp = p 29 return len(p), nil 30 } 31 32 func (m *ExtWriter) Flush() error { 33 _, err := m.Buf.Write(m.tmp) 34 return err 35 } 36 37 func (m *ExtWriter) Finalize() error { 38 if !*m.IsFinal { 39 *m.IsFinal = true 40 } 41 return nil 42 } 43 44 func (m *ExtWriter) SetBody(body []byte) { 45 m.Buf.Reset() 46 m.tmp = body 47 }