• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang gob.NewDecoder函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中gob.NewDecoder函数的典型用法代码示例。如果您正苦于以下问题:Golang NewDecoder函数的具体用法?Golang NewDecoder怎么用?Golang NewDecoder使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



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

示例1: Refresh

func (store *RemoteStore) Refresh() (err os.Error) {
	store.root = nil
	store.index = nil

	rootFile, err := store.FOpen(filepath.Join("/", r9p.ROOT_FILE), p.OREAD)
	if err != nil {
		return err
	}

	buffer := bytes.NewBuffer([]byte{})
	chunk := make([]byte, fs.BLOCKSIZE)
	for {
		n, err := rootFile.Read(chunk)
		if err != nil && err != os.EOF {
			return err
		}
		if n == 0 {
			err = nil
			break
		}
		buffer.Write(chunk[0:n])
	}

	decoder := gob.NewDecoder(buffer)

	store.root = &fs.Dir{}
	err = decoder.Decode(store.root)

	return err
}
开发者ID:cmars,项目名称:replican-r9p,代码行数:30,代码来源:clnt.go


示例2: Open

func Open(root string) (*Stash, os.Error) {
	// attempt to open the index in the specified directory
	if meta, err := os.Open(root + metaFile); err == nil {
		// attempt to read in the index
		s, dec := new(Stash), gob.NewDecoder(meta)
		if err = dec.Decode(&s.meta); err == nil {
			// attempt to open the data file
			if s.store, err = os.OpenFile(root+dataFile, os.O_RDWR, 0640); err == nil {
				s.init(root)
				s.idx = meta
				go s.sync()
			} else {
				s = nil
			}
		} else {
			s = nil
		}

		if s == nil {
			meta.Close()
		}

		return s, err
	} else {
		return nil, err
	}

	panic("Dead code reached!")
}
开发者ID:meenky,项目名称:gostash,代码行数:29,代码来源:stash.go


示例3: TestRatGobEncoding

func TestRatGobEncoding(t *testing.T) {
	var medium bytes.Buffer
	enc := gob.NewEncoder(&medium)
	dec := gob.NewDecoder(&medium)
	for i, test := range gobEncodingTests {
		for j := 0; j < 4; j++ {
			medium.Reset() // empty buffer for each test case (in case of failures)
			stest := test
			if j&1 != 0 {
				// negative numbers
				stest = "-" + test
			}
			if j%2 != 0 {
				// fractions
				stest = stest + "." + test
			}
			var tx Rat
			tx.SetString(stest)
			if err := enc.Encode(&tx); err != nil {
				t.Errorf("#%d%c: encoding failed: %s", i, 'a'+j, err)
			}
			var rx Rat
			if err := dec.Decode(&rx); err != nil {
				t.Errorf("#%d%c: decoding failed: %s", i, 'a'+j, err)
			}
			if rx.Cmp(&tx) != 0 {
				t.Errorf("#%d%c: transmission failed: got %s want %s", i, 'a'+j, &rx, &tx)
			}
		}
	}
}
开发者ID:Sunmonds,项目名称:gcc,代码行数:31,代码来源:rat_test.go


示例4: Get

func (s *Stash) Get(key string) (interface{}, os.Error) {
	defer s.Flush()

	// check the hot cache
	if e := s.cache.Get(key); e != nil {
		return e.Value, nil
	}

	// resort to the file
	s.sMutex.Lock()
	defer s.sMutex.Unlock()
	if _, err := s.store.Seek(s.meta.Index.Search(key).Offset, 0); err == nil {
		dec, tmp := gob.NewDecoder(io.LimitReader(s.store, s.meta.Index.PageSize)), &record{}

		// place every key/value pair into the hot cache if it is missing
		s.cMutex.Lock()
		defer s.cMutex.Unlock()
		for err = dec.Decode(tmp); err == nil; err = dec.Decode(tmp) {
			if e := s.cache.check(tmp.Key); e == nil {
				s.cache.Add(&entry{record{tmp.Key, tmp.Value}, time{0, 0}, false, nil})
			}
		}

		// check to see if it got picked up out of the file
		if e := s.cache.Get(key); e != nil {
			return e.Value, nil
		}
	} else {
		return nil, err
	}

	return nil, nil // couldn't find it
}
开发者ID:meenky,项目名称:gostash,代码行数:33,代码来源:stash.go


示例5: runFunc

func runFunc(w http.ResponseWriter, req *http.Request) {
	c := appengine.NewContext(req)
	defer req.Body.Close()

	var inv invocation
	if err := gob.NewDecoder(req.Body).Decode(&inv); err != nil {
		c.Errorf("delay: failed decoding task payload: %v", err)
		c.Warningf("delay: dropping task")
		return
	}

	f := funcs[inv.Key]
	if f == nil {
		c.Errorf("delay: no func with key %q found", inv.Key)
		c.Warningf("delay: dropping task")
		return
	}

	// TODO: This is broken for variadic functions.
	in := make([]reflect.Value, f.fv.Type().NumIn())
	in[0] = reflect.ValueOf(c)
	for i := 1; i < len(in); i++ {
		in[i] = reflect.ValueOf(inv.Args[i-1])
	}
	f.fv.Call(in)
}
开发者ID:sarnowski,项目名称:google-go-lang-idea-plugin,代码行数:26,代码来源:delay.go


示例6: NewFlatStatCache

func NewFlatStatCache() *FlatStatCache {
	filename := filepath.Join(osutil.CacheDir(), "camput.statcache")
	fc := &FlatStatCache{
		filename: filename,
		m:        make(map[string]fileInfoPutRes),
		dirty:    make(map[string]fileInfoPutRes),
	}

	if f, err := os.Open(filename); err == nil {
		defer f.Close()
		d := gob.NewDecoder(f)
		for {
			var key string
			var val fileInfoPutRes
			if d.Decode(&key) != nil || d.Decode(&val) != nil {
				break
			}
			val.Pr.Skipped = true
			fc.m[key] = val
			log.Printf("Read %q: %v", key, val)
		}
		log.Printf("Flatcache read %d entries from %s", len(fc.m), filename)
	}
	return fc
}
开发者ID:ipeet,项目名称:camlistore,代码行数:25,代码来源:flatcache.go


示例7: runFunc

func runFunc(c appengine.Context, w http.ResponseWriter, req *http.Request) {
	defer req.Body.Close()

	var inv invocation
	if err := gob.NewDecoder(req.Body).Decode(&inv); err != nil {
		c.Errorf("delay: failed decoding task payload: %v", err)
		c.Warningf("delay: dropping task")
		return
	}

	f := funcs[inv.Key]
	if f == nil {
		c.Errorf("delay: no func with key %q found", inv.Key)
		c.Warningf("delay: dropping task")
		return
	}

	// TODO: This is broken for variadic functions.
	ft := f.fv.Type()
	in := make([]reflect.Value, ft.NumIn())
	in[0] = reflect.ValueOf(c)
	for i := 1; i < len(in); i++ {
		in[i] = reflect.ValueOf(inv.Args[i-1])
	}
	out := f.fv.Call(in)

	if n := ft.NumOut(); n > 0 && ft.Out(n-1) == osErrorType {
		if errv := out[n-1]; !errv.IsNil() {
			c.Errorf("delay: func failed (will retry): %v", errv.Interface())
			w.WriteHeader(http.StatusInternalServerError)
			return
		}
	}
}
开发者ID:ashokgelal,项目名称:gorilla,代码行数:34,代码来源:delay.go


示例8: RetrieveActDetails

func RetrieveActDetails(c appengine.Context, actId int) (res *ActDetail, err os.Error) {
	var d DSActDetail
	if itm, err := memcache.Get(c, "actId__"+strconv.Itoa(actId)); err != nil && err != memcache.ErrCacheMiss {
		return nil, err
	} else if err == nil {
		// Cache hit
		buf := bytes.NewBuffer(itm.Value)
		dec := gob.NewDecoder(buf)
		dec.Decode(&d)
	} else {
		// Cache miss
		key := datastore.NewKey(c, "DSActDetail", "", int64(actId), nil)
		if err := datastore.Get(c, key, &d); err == datastore.ErrNoSuchEntity {
			return &ActDetail{ActId: actId}, nil
		} else if err != nil {
			return nil, err
		}
		buf := bytes.NewBufferString("")
		enc := gob.NewEncoder(buf)
		enc.Encode(d)

		itm := &memcache.Item{
			Key:   "actId__" + strconv.Itoa(actId),
			Value: buf.Bytes(),
		}

		err = memcache.Set(c, itm)
		c.Debugf("Request cache to memcache")
	}
	return d.fromDS(), nil
}
开发者ID:qtse,项目名称:go_fetch,代码行数:31,代码来源:persist.go


示例9: decodeGob

func decodeGob(value string) (result map[string]interface{}) {
	buffer := bytes.NewBufferString(value)
	decoder := gob.NewDecoder(buffer)
	result = make(map[string]interface{})
	decoder.Decode(&result)
	return result
}
开发者ID:qrush,项目名称:higo,代码行数:7,代码来源:sessions.go


示例10: SeekToLatestFile

func (fr *FileReader) SeekToLatestFile() os.Error {
	fr.lk.Lock()
	defer fr.lk.Unlock()

	// Find the file
	dir, pre := path.Split(fr.prefix)
	if dir == "" {
		dir = "."
	}
	d, err := os.Open(dir, os.O_RDONLY, 0)
	if err != nil {
		return err
	}
	files, err := d.Readdirnames(-1)
	if err != nil {
		return err
	}
	d.Close()
	files = filterAndSort(files, pre)
	if len(files) == 0 {
		return os.EOF
	}

	// Open it
	file := path.Join(dir, files[len(files)-1])
	fr.file, err = os.Open(file, os.O_RDONLY, 0)
	if err != nil {
		fr.file, fr.dec = nil, nil
		return err
	}
	fr.dec = gob.NewDecoder(fr.file)

	return nil
}
开发者ID:fedgrant,项目名称:tonika,代码行数:34,代码来源:reader.go


示例11: recoverLatestDecode

func recoverLatestDecode(fprefix string, e interface{}) os.Error {
	r, err := MakeFileReader(fprefix)
	if err != nil {
		return err
	}
	err = r.SeekToLatestFile()
	if err != nil {
		return err
	}
	dec := gob.NewDecoder(r)
	// TODO: Deep copy the latest successful read, so the last
	// unsuccessful read does not garble the good data
	ok := false
	for {
		err = dec.Decode(e)
		if err != nil {
			break
		}
		ok = true
	}
	if ok {
		return nil
	}
	return os.EOF
}
开发者ID:fedgrant,项目名称:tonika,代码行数:25,代码来源:reader.go


示例12: decodePassword

func decodePassword(b []byte) *passwordhash.PasswordHash {
	hash := new(passwordhash.PasswordHash)
	err := gob.NewDecoder(bytes.NewBuffer(b)).Decode(hash)
	if err == nil {
		return hash
	}
	panic(err)
}
开发者ID:cmc333333,项目名称:fragspace,代码行数:8,代码来源:encryption.go


示例13: GobDecode

func (k *Key) GobDecode(buf []byte) error {
	gk := new(gobKey)
	if err := gob.NewDecoder(bytes.NewBuffer(buf)).Decode(gk); err != nil {
		return err
	}
	*k = *gobKeyToKey(gk)
	return nil
}
开发者ID:ashokgelal,项目名称:gorilla,代码行数:8,代码来源:key.go


示例14: deserialize

// deserialize decodes a session value using gob.
func deserialize(value []byte) (SessionData, error) {
	var session SessionData
	b := bytes.NewBuffer(value)
	d := gob.NewDecoder(b)
	if err := d.Decode(&session); err != nil {
		return nil, err
	}
	return session, nil
}
开发者ID:klinster,项目名称:Bessie,代码行数:10,代码来源:sessions.go


示例15: NewClient

// NewClient returns a new Client to handle requests to the
// set of services at the other end of the connection.
func NewClient(conn io.ReadWriteCloser) *Client {
	client := new(Client);
	client.conn = conn;
	client.enc = gob.NewEncoder(conn);
	client.dec = gob.NewDecoder(conn);
	client.pending = make(map[uint64]*Call);
	go client.input();
	return client;
}
开发者ID:8l,项目名称:go-learn,代码行数:11,代码来源:client.go


示例16: oldPollChan

func oldPollChan(file *os.File) *LunchTracker {
	decode := gob.NewDecoder(file)
	poll := &LunchPoll{}
	err := decode.Decode(poll)
	if err != nil {
		panic(err)
	}
	return pollChan(*poll)
}
开发者ID:patricklucas,项目名称:Go2Lunch,代码行数:9,代码来源:lunchd.go


示例17: newEncodeDecodeCloser

func newEncodeDecodeCloser(rwc io.ReadWriteCloser) *EncodeDecodeCloser {
	p := prof.NewReadWriteCloser(rwc)
	return &EncodeDecodeCloser{
		p,
		gob.NewEncoder(p),
		gob.NewDecoder(p),
		p,
	}
}
开发者ID:fedgrant,项目名称:tonika,代码行数:9,代码来源:util.go


示例18: LoadTGene

func LoadTGene(file io.Reader) (tGene *TGene) {
	tGene = new(TGene)
	dec := gob.NewDecoder(file)
	err := dec.Decode(tGene)
	if err != nil {
		panic(err.String())
	}
	return
}
开发者ID:ericfode,项目名称:Datazome,代码行数:9,代码来源:tGene.go


示例19: LatestDecode

func LatestDecode(fprefix string, e interface{}) os.Error {
	l, err := os.Open(fprefix+"-latest", os.O_RDONLY, 0)
	if err != nil {
		return recoverLatestDecode(fprefix, e)
	}
	dec := gob.NewDecoder(l)
	err = dec.Decode(e)
	l.Close()
	return err
}
开发者ID:fedgrant,项目名称:tonika,代码行数:10,代码来源:reader.go


示例20: load

func (db *FileSystem) load(r io.Reader, ser Serializer) Serial {
	gz, err := gzip.NewReader(r)
	defer gz.Close()
	item := ser.New()
	gdec := gob.NewDecoder(gz)
	err = gdec.Decode(item)
	if err != nil {
		return nil
	}
	return item
}
开发者ID:shaban,项目名称:Kengal-Server,代码行数:11,代码来源:gobzip.go



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang gob.NewEncoder函数代码示例发布时间:2022-05-28
下一篇:
Golang types.Time3339函数代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap