code: func (codec *SyncCodec) Decode(in *ByteBuf) (bool, interface{}, error) {
  	cmd, _ := in.ReadByte()
  	if cmd == cmdNotify {
  		value := acquireNotify()
  		value.offset, _ = in.ReadUInt64()
  		return true, value, nil
  	} else if cmd == cmdNotifySync {
  		value := acquireNotifySync()
  		value.offset, _ = in.ReadUInt64()
  		return true, value, nil
  	} else if cmd == cmdNotifySyncRsp {
  		value := acquireNotifySyncRsp()
  		value.offset, _ = in.ReadUInt64()
  		value.count, _ = in.ReadByte()
  		value.buf.Write(in.GetMarkedRemindData())
  		in.MarkedBytesReaded()
  		return true, value, nil
  	} else if cmd == cmdNotifyRaw {
  		value := acquireNotifyRaw()
  		value.buf.Write(in.GetMarkedRemindData())
  		in.MarkedBytesReaded()
  		return true, value, nil
  	} else if cmd == cmdNotifyHB {
  		value := &notifyHB{}
  		value.offset, _ = in.ReadUInt64()
  		return true, value, nil
  	}
  
  	return false, nil, nil
  }
docs: // Decode decode with raw byte array