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


Golang Fcall.Data方法代码示例

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


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

示例1: readfile

func (c *ClientConn) readfile(fc *plan9.Fcall, ref *fileRef) *plan9.Fcall {
	size, err := c.explorer.Sizeof(ref.Path)
	if err != nil {
		return c.unexpectedErr(fc, err)
	}
	if size > 0 && fc.Offset >= size {
		// trying to reading past the end of file.
		// return count == 0 to signal EOF to client
		fc.Count = 0
		return fc
	}
	fc.Data = allocBuffer(min(int(c.iounit), int(fc.Count), int(size)))
	defer discardBuffer(fc.Data)
	n, err := c.explorer.Read(fc.Data, fc.Offset, ref.Path)
	if err == io.EOF {
		if n == 0 {
			// returned EOF without reading anything, should return fc.Count = 0
			discardBuffer(fc.Data)
			fc.Data = nil
			err = nil
			return fc
		} else {
			// was able to read som data from the file, should return the count
			// but not the error. The next call to read will trigger the EOF
			err = nil
		}
	}
	if err != nil {
		return c.unexpectedErr(fc, err)
	}
	fc.Count = uint32(n)
	fc.Data = fc.Data[:fc.Count]
	return fc
}
开发者ID:andrebq,项目名称:exp,代码行数:34,代码来源:main.go

示例2: readdir

func (c *ClientConn) readdir(fc *plan9.Fcall, ref *fileRef) *plan9.Fcall {
	// if the call have an offset, return 0
	// since all readdir call's will return the full directory
	if fc.Offset > 0 {
		fc.Count = 0
		return fc
	}
	childs, err := c.explorer.ListDir(ref.Path)
	if err != nil {
		return c.unexpectedErr(fc, err)
	}
	tmpBuf := allocBuffer(int(c.iounit))
	out := bytes.NewBuffer(tmpBuf[:0])
	defer discardBuffer(tmpBuf)
	for _, id := range childs {
		stat, err := c.explorer.Stat(id.Path)
		if err != nil {
			return c.unexpectedErr(fc, err)
		}
		dir := plan9.Dir{
			Qid:    plan9.Qid{Type: uint8(stat.Type), Vers: stat.Version, Path: id.Path},
			Mode:   plan9.Perm(stat.Mode),
			Atime:  stat.Atime,
			Mtime:  stat.Mtime,
			Length: stat.Size,
			Uid:    stat.Uname,
			Gid:    stat.Gname,
			Name:   stat.Name,
		}
		buf, err := dir.Bytes()
		if err != nil {
			return c.unexpectedErr(fc, err)
		}
		_, err = out.Write(buf)
		if err != nil {
			return c.unexpectedErr(fc, err)
		}
	}
	fc.Count = uint32(len(fc.Data))
	fc.Data = out.Bytes()
	return fc
}
开发者ID:andrebq,项目名称:exp,代码行数:42,代码来源:main.go


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