Exemple #1
0
func ReadMsg(r io.Reader) (interface{}, error) {
	msgType, err := readOneByte(r)
	if err != nil {
		return nil, err
	}

	var msg interface{}

	switch msgType {
	case getNetMsg:
		msg = new(GetMsg)
	case putNetMsg:
		msg = new(PutMsg)
	case delNetMsg:
		msg = new(DelMsg)
	case getIdxNetMsg:
		msg = new(GetIdxMsg)
	default:
		return nil, fmt.Errorf("unrecognized message type")
	}

	err = util.ReadObject(r, msg)
	if err != nil {
		return nil, err
	}

	return reflect.ValueOf(msg).Elem().Interface(), nil
}
Exemple #2
0
func ReadIdx(r io.Reader) (map[string]FileInfo, error) {
	var index map[string]FileInfo

	err := util.ReadObject(r, &index)
	if err != nil {
		return nil, err
	}

	return index, nil
}