当前位置: 首页>>代码示例>>Golang>>正文


Golang Buffer.Read方法代码示例

本文整理汇总了Golang中bytes.Buffer.Read方法的典型用法代码示例。如果您正苦于以下问题:Golang Buffer.Read方法的具体用法?Golang Buffer.Read怎么用?Golang Buffer.Read使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bytes.Buffer的用法示例。


在下文中一共展示了Buffer.Read方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: MarshalPoint

func MarshalPoint(pt abstract.Point) []byte {
	buf := new(bytes.Buffer)
	ptByte := make([]byte, SecretSize)
	pt.MarshalTo(buf)
	buf.Read(ptByte)
	return ptByte
}
开发者ID:Xyroe,项目名称:riffle,代码行数:7,代码来源:utils.go

示例2: MessageWithCallback

func (s Servent) MessageWithCallback(message uint8, buffer *bytes.Buffer, callback Callback) (err error) {
	conn, err := net.Dial("tcp", s.Addr)
	if err != nil {
		return err
	}

	defer conn.Close()

	binary.Write(conn, binary.LittleEndian, message)
	binary.Write(conn, binary.LittleEndian, uint64(buffer.Len()))

	bytes := make([]byte, 2048)
	for {
		_, err := buffer.Read(bytes)
		if err == io.EOF {
			break
		}
		if err != nil {
			return err
		}
		binary.Write(conn, binary.LittleEndian, bytes)
	}

	if callback != nil {
		err = callback(conn)
		if err != nil {
			return err
		}
	}

	return nil
}
开发者ID:juliogreff,项目名称:scallywag,代码行数:32,代码来源:scallywag.go

示例3: newSourceChannel

func newSourceChannel(cs *SourceChannel) error {
	f, err := os.Open("/dev/urandom")
	if err != nil {
		return err
	}
	buf := new(bytes.Buffer)
	io.CopyN(buf, f, 4096)
	f.Close()
	go func() {
		for {
			if buf.Len() == 0 {
				return
			}
			e := make([]byte, 24)
			_, err := buf.Read(e)
			if err != nil {
				fmt.Fprintf(os.Stderr, "tunafish: error on buffer (%v)\n", err)
				return

			}
			if cs.In == nil {
				return
			}
			cs.In <- e
			<-time.After(30 * time.Millisecond)
		}
	}()
	return nil
}
开发者ID:postfix,项目名称:cryptobox-ng,代码行数:29,代码来源:source_test.go

示例4: NewMapXmlReaderRaw

// Get next XML doc from an io.Reader as a Map value.  Returns Map value and pointer to raw XML.
//	NOTE: Due to the implementation of xml.Decoder, the raw XML off the reader is buffered to *[]byte
//	      using a ByteReader. If the io.Reader is an os.File, there may be significant performance impact.
//	      See the examples - getmetrics1.go through getmetrics4.go - for comparative use cases on a large
//	      data set. If the io.Reader is wrapping a []byte value in-memory, however, such as http.Request.Body
//	      you CAN use it to efficiently unmarshal an XML and retrieve the raw XML in a single call.
func NewMapXmlReaderRaw(xmlReader io.Reader, cast ...bool) (Map, *[]byte, error) {
	var r bool
	if len(cast) == 1 {
		r = cast[0]
	}
	// create TeeReader so we can retrieve raw XML
	wb := new(bytes.Buffer)
	trdr := myTeeReader(xmlReader, wb) // see code at EOF

	// build the node tree
	n, err := xmlReaderToTree(trdr)

	// retrieve the raw XML that was decoded
	b := make([]byte, wb.Len())
	_, _ = wb.Read(b)

	if err != nil {
		return nil, &b, err
	}

	// create the Map value
	m := make(map[string]interface{})
	m[n.key] = n.treeToMap(r)

	return m, &b, nil
}
开发者ID:nytlabs,项目名称:mxj,代码行数:32,代码来源:xml.go

示例5: Read

func (a *OfpActionVendorPort) Read(b []byte) (n int, err error) {
	a.Length = a.Len()
	buf := new(bytes.Buffer)
	err = binary.Write(buf, binary.BigEndian, a)
	n, err = buf.Read(b)
	return
}
开发者ID:jessta,项目名称:ogo,代码行数:7,代码来源:action.go

示例6: Write

// Writer implements io.Writer, this function encodes a message  using
// crypto.nacl.box.Seal, then prepends a random generated nonce to it,
// and writes it to s.w encoded using binary.Write
func (s SecureWriter) Write(message []byte) (n int, err error) {
	if len(message) > MAX_BYTE_LENGTH {
		return 0, errors.New("The data to be encoded is to big")
	}

	nonce := GenerateNonce()

	// Use box.Seal to encode the data
	var out []byte
	encText := box.Seal(out, message, &nonce, s.pub, s.priv)

	// The nonce will be preceding the binary data of the message
	binaryData := append(nonce[:], encText...)

	// Encode the nonce + encodedMsg using binary.Write
	buf := new(bytes.Buffer)
	err = binary.Write(buf, binary.LittleEndian, binaryData)

	// Get the size of encoded data and prepend it in format [2]byte
	size := uint16(buf.Len())
	dataSize := make([]byte, 2)
	binary.LittleEndian.PutUint16(dataSize, size)

	data := make([]byte, size)
	n, err = buf.Read(data)

	data = append(dataSize, data...)

	// Data will be:
	// |length [2]byte| binary encoded data [length]byte
	n, err = s.w.Write(data)
	return n, err
}
开发者ID:billyboar,项目名称:GCSolutions,代码行数:36,代码来源:secure.go

示例7: getFcgiOutput

func getFcgiOutput(br *bytes.Buffer) *bytes.Buffer {
	var output bytes.Buffer
	for {
		var h fcgiHeader
		err := binary.Read(br, binary.BigEndian, &h)
		if err == os.EOF {
			break
		}

		content := make([]byte, h.ContentLength)
		br.Read(content)

		//read padding
		if h.PaddingLength > 0 {
			padding := make([]byte, h.PaddingLength)
			br.Read(padding)
		}

		if h.Type == fcgiStdout {
			output.Write(content)
		}
	}

	return &output
}
开发者ID:apg,项目名称:web.go,代码行数:25,代码来源:web_test.go

示例8: Read

func (f *OFFlowMod) Read(b []byte) (n int, err error) {

	f.Header.Length = f.ComputeLength()
	buf := new(bytes.Buffer)
	buf.ReadFrom(f.Header)
	//	fmt.Println("FlowMod Read1: Header: ", buf.Bytes())
	buf.ReadFrom(f.OFMatch)
	//	fmt.Println("FlowMod Read2: Match: ", buf.Bytes())
	binary.Write(buf, binary.BigEndian, f.Cookie)
	//	fmt.Println("FlowMod Read3: Cookie: ", buf.Bytes())
	binary.Write(buf, binary.BigEndian, f.Command)
	binary.Write(buf, binary.BigEndian, f.IdleTimeout)
	binary.Write(buf, binary.BigEndian, f.HardTimeout)
	binary.Write(buf, binary.BigEndian, f.Priority)
	binary.Write(buf, binary.BigEndian, f.BufferID)
	binary.Write(buf, binary.BigEndian, f.OutPort)
	binary.Write(buf, binary.BigEndian, f.Flags)
	binary.Write(buf, binary.BigEndian, f.Action.Type)
	binary.Write(buf, binary.BigEndian, f.Action.Length)
	binary.Write(buf, binary.BigEndian, f.Action.Port)
	binary.Write(buf, binary.BigEndian, f.Action.MaxLen)

	//	fmt.Println("FlowMod Read4: all: ", buf.Bytes())

	n, err = buf.Read(b)
	if err != nil {
		return
	}
	return n, io.EOF
}
开发者ID:radhakrishnak,项目名称:GoVisor,代码行数:30,代码来源:ofFlowMod.go

示例9: decodeAmf0Utf8

func decodeAmf0Utf8(buffer *bytes.Buffer) (v string, err error) {
	// len
	var length int16
	if err = binary.Read(buffer, binary.BigEndian, &length); err != nil {
		err = Amf0StringLengthRead
		return
	}

	// empty string
	if length <= 0 {
		return
	}

	// data
	data := make([]byte, length)
	if _, err = buffer.Read(data); err != nil {
		err = Amf0StringDataRead
		return
	}

	// support utf8-1 only
	// 1.3.1 Strings and UTF-8
	// UTF8-1 = %x00-7F
	// TODO: support other utf-8 strings

	v = string(data)

	return
}
开发者ID:jingdi,项目名称:go-srs,代码行数:29,代码来源:amf0.go

示例10: Parse

func (hq *HashQuery) Parse() error {
	// Require HTTP POST
	if hq.Method != "POST" {
		return ErrorInvalidMethod(hq.Method)
	}
	hq.responseChan = make(ResponseChan)
	var body *bytes.Buffer
	{
		defer hq.Body.Close()
		buf, err := ioutil.ReadAll(hq.Body)
		if err != nil {
			return err
		}
		body = bytes.NewBuffer(buf)
	}
	// Parse hashquery POST data
	n, err := recon.ReadInt(body)
	if err != nil {
		return err
	}
	hq.Digests = make([]string, n)
	for i := 0; i < n; i++ {
		hashlen, err := recon.ReadInt(body)
		if err != nil {
			return err
		}
		hash := make([]byte, hashlen)
		_, err = body.Read(hash)
		if err != nil {
			return err
		}
		hq.Digests[i] = hex.EncodeToString(hash)
	}
	return nil
}
开发者ID:cmars,项目名称:hockeypuck,代码行数:35,代码来源:requests.go

示例11: Read

func (a *ActionEnqueue) Read(b []byte) (n int, err error) {
	buf := new(bytes.Buffer)
	if err = binary.Write(buf, binary.BigEndian, a.Type); err != nil {
		return
	}
	n += 2
	if err = binary.Write(buf, binary.BigEndian, a.Length); err != nil {
		return
	}
	n += 2
	if err = binary.Write(buf, binary.BigEndian, a.Port); err != nil {
		return
	}
	n += 2
	if err = binary.Write(buf, binary.BigEndian, a.pad); err != nil {
		return
	}
	n += 6
	if err = binary.Write(buf, binary.BigEndian, a.QueueID); err != nil {
		return
	}
	n += 4
	if n, err = buf.Read(b); n == 0 {
		return
	}
	return n, io.EOF
}
开发者ID:postfix,项目名称:ogo,代码行数:27,代码来源:action.go

示例12: Decode

func (tags *EventHeaderTags) Decode(buffer *bytes.Buffer) bool {
	b := make([]byte, 2)
	realLen, err := buffer.Read(b)
	if err != nil || realLen != 2 {
		return false
	}
	tags.magic = binary.BigEndian.Uint16(b)
	if tags.magic != MAGIC_NUMBER {
		return false
	}
	if token, ok := DecodeStringValue(buffer); nil == ok {
		ss := strings.Split(token, _splitter)
		if len(ss) > 1 {
			tags.Token = ss[1]
			tags.UserToken = ss[0]
		} else if len(ss) == 1 {
			tags.Token = token
		} else {
			return false
		}
	} else {
		return false
	}
	return true
}
开发者ID:ducktsmt,项目名称:snova-gae,代码行数:25,代码来源:auth.go

示例13: Read

func (m *OfpMatch) Read(b []byte) (n int, err error) {
	// Any non-zero value fields should not be wildcarded.
	if m.InPort != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_IN_PORT
	}
	if m.DLSrc.String() != "00:00:00:00:00:00" {
		m.Wildcards = m.Wildcards ^ OFPFW_DL_SRC
	}
	if m.DLDst.String() != "00:00:00:00:00:00" {
		m.Wildcards = m.Wildcards ^ OFPFW_DL_DST
	}
	if m.DLVLAN != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_DL_VLAN
	}
	if m.DLVLANPcp != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_DL_VLAN_PCP
	}
	if m.DLType != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_DL_TYPE
	}
	if m.NWTos != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_NW_TOS
	}
	if m.NWProto != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_NW_PROTO
	}
	if m.NWSrc.String() != "0.0.0.0" {
		m.Wildcards = m.Wildcards ^ OFPFW_NW_SRC_ALL
	}
	if m.NWDst.String() != "0.0.0.0" {
		m.Wildcards = m.Wildcards ^ OFPFW_NW_DST_ALL
	}
	if m.TPSrc != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_TP_SRC
	}
	if m.TPDst != 0 {
		m.Wildcards = m.Wildcards ^ OFPFW_TP_DST
	}
	buf := new(bytes.Buffer)
	binary.Write(buf, binary.BigEndian, m.Wildcards)
	binary.Write(buf, binary.BigEndian, m.InPort)
	binary.Write(buf, binary.BigEndian, m.DLSrc)
	binary.Write(buf, binary.BigEndian, m.DLDst)
	binary.Write(buf, binary.BigEndian, m.DLVLAN)
	binary.Write(buf, binary.BigEndian, m.DLVLANPcp)
	binary.Write(buf, binary.BigEndian, m.Pad)
	binary.Write(buf, binary.BigEndian, m.DLType)
	binary.Write(buf, binary.BigEndian, m.NWTos)
	binary.Write(buf, binary.BigEndian, m.NWProto)
	binary.Write(buf, binary.BigEndian, m.Pad1)
	binary.Write(buf, binary.BigEndian, m.NWSrc)
	binary.Write(buf, binary.BigEndian, m.NWDst)
	binary.Write(buf, binary.BigEndian, m.TPSrc)
	binary.Write(buf, binary.BigEndian, m.TPDst)
	n, err = buf.Read(b)
	if n == 0 {
		return
	}
	return n, io.EOF
}
开发者ID:jessta,项目名称:ogo,代码行数:60,代码来源:match.go

示例14: TestExtOrPortSendTransport

func TestExtOrPortSendTransport(t *testing.T) {
	tests := [...]struct {
		methodName string
		expected   []byte
	}{
		{"", []byte("\x00\x02\x00\x00")},
		{"a", []byte("\x00\x02\x00\x01a")},
		{"alpha", []byte("\x00\x02\x00\x05alpha")},
	}

	for _, test := range tests {
		var buf bytes.Buffer
		err := extOrPortSendTransport(&buf, test.methodName)
		if err != nil {
			t.Errorf("%q unexpectedly returned an error: %s", test.methodName, err)
		}
		p := make([]byte, 1024)
		n, err := buf.Read(p)
		if err != nil {
			t.Fatal(err)
		}
		output := p[:n]
		if !bytes.Equal(output, test.expected) {
			t.Errorf("%q → %s (expected %s)", test.methodName,
				fmtBytes(output), fmtBytes(test.expected))
		}
	}
}
开发者ID:gitter-badger,项目名称:alkasir,代码行数:28,代码来源:pt_test.go

示例15: submitResp

func (t *Connection) submitResp(seq uint32, buf *bytes.Buffer) (
	err error) {
	_, err = t.getContext(seq)
	if err != nil {
		glog.Error(err)
		return
	}
	// MsgID 10 octetString
	msgID := make([]byte, 10)
	_, err = buf.Read(msgID)
	if err != nil {
		return
	}
	// status
	var status uint32
	err = binary.Read(buf, binary.BigEndian, &status)
	if err != nil {
		return
	}
	if status != STATUS_OK {
		err = fmt.Errorf("Submit seq %d failed, status = %d", seq, status)
	}
	glog.Infof("Submit seq %d MsgID 0x%x", seq, msgID)
	return
}
开发者ID:4freewifi,项目名称:smgp,代码行数:25,代码来源:smgp.go


注:本文中的bytes.Buffer.Read方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。