如果您正苦于以下问题:Golang Writer类的具体用法?Golang Writer怎么用?Golang Writer使用的例子?那么, 这里精选的代码示例或许能为您提供帮助。
以下是Writer类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为感觉有用的代码点赞,您的评价将有助于系统推荐出更好的Golang代码示例。
示例1: writeSuccessResponseHeader
func writeSuccessResponseHeader(w *bufio.Writer, opcode uint8, keyLength, extraLength,
totalBodyLength int, opaque uint32, flush bool) error {
header := resHeadPool.Get().(ResponseHeader)
header.Magic = MagicResponse
header.Opcode = opcode
header.KeyLength = uint16(keyLength)
header.ExtraLength = uint8(extraLength)
header.DataType = uint8(0)
header.Status = StatusSuccess
header.TotalBodyLength = uint32(totalBodyLength)
header.OpaqueToken = opaque
header.CASToken = uint64(0)
if err := writeResponseHeader(w, header); err != nil {
resHeadPool.Put(header)
return err
}
if flush {
if err := w.Flush(); err != nil {
resHeadPool.Put(header)
return err
}
}
metrics.IncCounterBy(common.MetricBytesWrittenRemote, resHeaderLen)
resHeadPool.Put(header)
return nil
}
示例2: writeBodyFixedSize
func writeBodyFixedSize(w *bufio.Writer, r io.Reader, size int64) error {
if size > maxSmallFileSize {
// w buffer must be empty for triggering
// sendfile path in bufio.Writer.ReadFrom.
if err := w.Flush(); err != nil {
return err
}
}
// Unwrap a single limited reader for triggering sendfile path
// in net.TCPConn.ReadFrom.
lr, ok := r.(*io.LimitedReader)
if ok {
r = lr.R
}
n, err := copyZeroAlloc(w, r)
if ok {
lr.N -= n
}
if n != size && err == nil {
err = fmt.Errorf("copied %d bytes from body stream instead of %d bytes", n, size)
}
return err
}
示例3: outputResults
func (r Resolver) outputResults(w *bufio.Writer, results gresults) {
var zip, city, state, stateName, county, country, countryName string
var latitude, longitude float32
var comp addressComponent
var err error
for _, res := range results.Results {
if comp, err = res.findAddressComponent(zipType); err == nil {
zip = comp.LongName
}
if comp, err = res.findAddressComponent(cityType); err == nil {
city = comp.LongName
}
if comp, err = res.findAddressComponent(countyType); err == nil {
county = comp.LongName
}
if comp, err = res.findAddressComponent(stateType); err == nil {
state = strings.ToUpper(comp.ShortName)
stateName = comp.LongName
}
if comp, err = res.findAddressComponent(countryType); err == nil {
country = strings.ToUpper(comp.ShortName)
countryName = comp.LongName
}
latitude = res.Geometry.Location.Lat
longitude = res.Geometry.Location.Lng
}
w.WriteString(fmt.Sprintf("%v,\"%v\",\"%v\",\"%v\",\"%v\",\"%v\",\"%v\",%v,%v\n", country, zip, city, state, stateName, county, countryName, latitude, longitude))
w.Flush()
}
示例4: NewStreamReader
// NewStreamReader returns a reader, which replays all the data generated by sw.
//
// The returned reader may be passed to Response.SetBodyStream.
//
// Close must be called on the returned reader after all the required data
// has been read. Otherwise goroutine leak may occur.
//
// See also Response.SetBodyStreamWriter.
func NewStreamReader(sw StreamWriter) io.ReadCloser {
pc := fasthttputil.NewPipeConns()
pw := pc.Conn1()
pr := pc.Conn2()
var bw *bufio.Writer
v := streamWriterBufPool.Get()
if v == nil {
bw = bufio.NewWriter(pw)
} else {
bw = v.(*bufio.Writer)
bw.Reset(pw)
}
go func() {
defer func() {
if r := recover(); r != nil {
defaultLogger.Printf("panic in StreamWriter: %s\nStack trace:\n%s", r, debug.Stack())
}
}()
sw(bw)
bw.Flush()
pw.Close()
streamWriterBufPool.Put(bw)
}()
return pr
}
示例5: authenticate
// authenticate authenticates ourselves with the X server.
// displayStr is the "12" out of ":12.0".
func authenticate(w *bufio.Writer, displayStr string) os.Error {
key, value, err := readAuth(displayStr)
if err != nil {
return err
}
// Assume that the authentication protocol is "MIT-MAGIC-COOKIE-1".
if len(key) != 18 || len(value) != 16 {
return os.NewError("unsupported Xauth")
}
// 0x006c means little-endian. 0x000b, 0x0000 means X major version 11, minor version 0.
// 0x0012 and 0x0010 means the auth key and value have lengths 18 and 16.
// The final 0x0000 is padding, so that the string length is a multiple of 4.
_, err = io.WriteString(w, "\x6c\x00\x0b\x00\x00\x00\x12\x00\x10\x00\x00\x00")
if err != nil {
return err
}
_, err = io.WriteString(w, key)
if err != nil {
return err
}
// Again, the 0x0000 is padding.
_, err = io.WriteString(w, "\x00\x00")
if err != nil {
return err
}
_, err = io.WriteString(w, value)
if err != nil {
return err
}
err = w.Flush()
if err != nil {
return err
}
return nil
}
示例6: WriteResponse
func (c *DefaultServerCodec) WriteResponse(wr *bufio.Writer, proto *Proto) (err error) {
log.Debug("write proto: %v", proto)
// packlen =header(16) + body
if err = binary.Write(wr, binary.BigEndian, uint32(rawHeaderLen)+uint32(len(proto.Body))); err != nil {
log.Error("packLen: binary.Write() error(%v)", err)
return
}
if err = binary.Write(wr, binary.BigEndian, rawHeaderLen); err != nil {
log.Error("headerLen: binary.Write() error(%v)", err)
return
}
if err = binary.Write(wr, binary.BigEndian, proto.Ver); err != nil {
log.Error("protoVer: binary.Write() error(%v)", err)
return
}
if err = binary.Write(wr, binary.BigEndian, proto.Operation); err != nil {
log.Error("operation: binary.Write() error(%v)", err)
return
}
if err = binary.Write(wr, binary.BigEndian, proto.SeqId); err != nil {
log.Error("seqId: binary.Write() error(%v)", err)
return
}
if proto.Body != nil {
if _, err = wr.Write(proto.Body); err != nil {
log.Error("body: wr.Write() error(%v)", err)
return
}
}
return wr.Flush()
}
示例7: Write
// Write writes response to w.
//
// Write doesn't flush response to w for performance reasons.
func (resp *Response) Write(w *bufio.Writer) error {
var err error
if resp.bodyStream != nil {
contentLength := resp.Header.ContentLength()
if contentLength >= 0 {
if err = resp.Header.Write(w); err != nil {
return err
}
if err = writeBodyFixedSize(w, resp.bodyStream, contentLength); err != nil {
return err
}
} else {
resp.Header.SetContentLength(-1)
if err = resp.Header.Write(w); err != nil {
return err
}
if err = writeBodyChunked(w, resp.bodyStream); err != nil {
return err
}
}
if bsc, ok := resp.bodyStream.(io.Closer); ok {
err = bsc.Close()
}
return err
}
resp.Header.SetContentLength(len(resp.body))
if err = resp.Header.Write(w); err != nil {
return err
}
_, err = w.Write(resp.body)
return err
}
示例8: doWriteRune
func doWriteRune(w *bufio.Writer) {
if written, err := w.WriteRune(rune('o')); err != nil {
log.Fatalf("failed writing a rune: %s", err)
} else {
log.Printf("Wrote rune in %d bytes", written)
}
}
示例9: doWriteString
func doWriteString(w *bufio.Writer) {
if written, err := w.WriteString(", The Standard Library\n"); err != nil {
log.Fatalf("failed writing string: %s", err)
} else {
log.Printf("Wrote string in %d bytes", written)
}
}
示例10: emit_allele_path_item
func emit_allele_path_item(ofp *bufio.Writer) {
for k := range g_allele_path_item {
for i := 0; i < len(g_allele_path_item[k]); i++ {
s := fmt.Sprintf("%d,%d,%d,%d,%d,%s\n",
g_allele_path_item[k][i].AlleleId,
g_allele_path_item[k][i].PathItemIndex,
g_allele_path_item[k][i].SequenceId,
g_allele_path_item[k][i].Start,
g_allele_path_item[k][i].Length,
g_allele_path_item[k][i].StrandIsForward)
ofp.Write([]byte(s))
}
}
return
for allele_name := range g_allele_sequenceid_path {
allele_id := g_allele_name_id_map[allele_name]
for i := 0; i < len(g_allele_sequenceid_path[allele_name]); i++ {
seqid := g_allele_sequenceid_path[allele_name][i]
s := fmt.Sprintf("%d,%d,%d,%s,%s,%s\n", allele_id, i, seqid, "NULL", "NULL", "'TRUE'")
ofp.Write([]byte(s))
}
}
}