コード例 #1
0
ファイル: manager.go プロジェクト: rajatgoel/slimcache
func asBuckets(f *shm.File) ([]bucket, gommap.MMap, error) {
	arr, mmap, err := shm.MMapTyped(f, bucket{})
	if err != nil {
		return nil, nil, err
	}

	buckets, ok := arr.([]bucket)
	if !ok {
		panic("failed to cast []byte to []bucket")
	}

	return buckets, mmap, nil
}
コード例 #2
0
ファイル: table.go プロジェクト: rajatgoel/slimcache
func Open(name string) (Table, error) {
	f, err := shm.Open(name, os.O_RDWR)
	if err != nil {
		return nil, err
	}

	arr, mmap, err := shm.MMapTyped(f, entry{})
	if err != nil {
		return nil, err
	}

	entries, ok := arr.([]entry)
	if !ok {
		panic("failed to cast []byte to []entry")
	}

	return &table{
		f:       f,
		entries: entries,
		mmap:    mmap,
	}, nil
}