Exemple #1
0
func h1() {
	buf := make([]byte, bitcask.HintHeaderSize)
	fmt.Println("hfp:", os.Args[1], "dfp:", os.Args[2])
	fp, err := os.Open(os.Args[1])
	dfp, _ := os.Open(os.Args[2])
	if err != nil {
		logger.Fatal(err)
	}

	for {
		n, err := fp.Read(buf)
		if err != nil && err != io.EOF {
			logger.Fatal(err)
		}

		if err == io.EOF {
			break
		}

		if n != len(buf) || n != bitcask.HintHeaderSize {
			logger.Fatal(n)
		}

		htStamp, hksz, hvaluesz, hvaluePos := bitcask.DecodeHint(buf)
		logger.Debug("hintSize:", hksz)
		time.Sleep(time.Second * 3)
		key := make([]byte, hksz)
		fp.Read(key)
		fmt.Println("Hint:", "key:", string(key), htStamp, "ksz:", hksz, "valuesize:", hvaluesz, "pos:", hvaluePos)
		if err != nil {
			logger.Fatal(err)
		}
		// read
		dbuf := make([]byte, bitcask.HeaderSize+hksz+hvaluesz)
		dfp.ReadAt(dbuf, int64(hvaluePos))
		dvalue, err := bitcask.DecodeEntry(dbuf)
		if err != nil {
			logger.Fatal(err)
		}
		fmt.Println("dvalue:", string(dvalue))
		os.Exit(0)
	}
}
Exemple #2
0
func d2() {
	buf := make([]byte, bitcask.HeaderSize)
	fp, err := os.Open(os.Args[1])
	if err != nil {
		logger.Fatal(err)
	}

	for {
		n, err := fp.Read(buf[0:])
		if err != nil && err != io.EOF {
			logger.Fatal(err)
		}
		if n != len(buf) {
			logger.Fatal(n)
		}
		value, err := bitcask.DecodeEntry(buf)
		logger.Info(value)
		if err != nil {
			logger.Fatal(err)
		}
		//logger.Info(c32, tStamp, ksz, valuesz, key, value)
	}
}