// String implements Stringer interface and returns string representation of key. func (ky *Key) String() string { if ky == nil { return "" } if ky.userKey != nil { return fmt.Sprintf("%s:%s:%s:%v", ky.namespace, ky.setName, ky.userKey.String(), Buffer.BytesToHexString(ky.digest)) } return fmt.Sprintf("%s:%s::%v", ky.namespace, ky.setName, Buffer.BytesToHexString(ky.digest)) }
// Parse all results in the batch. Add records to shared list. // If the record was not found, the bins will be nil. func (cmd *batchCommandExists) parseRecordResults(ifc command, receiveSize int) (bool, error) { //Parse each message response and add it to the result array cmd.dataOffset = 0 for cmd.dataOffset < receiveSize { if err := cmd.readBytes(int(_MSG_REMAINING_HEADER_SIZE)); err != nil { return false, err } resultCode := ResultCode(cmd.dataBuffer[5] & 0xFF) // The only valid server return codes are "ok" and "not found". // If other return codes are received, then abort the batch. if resultCode != 0 && resultCode != KEY_NOT_FOUND_ERROR { return false, NewAerospikeError(resultCode) } info3 := cmd.dataBuffer[3] // If cmd is the end marker of the response, do not proceed further if (int(info3) & _INFO3_LAST) == _INFO3_LAST { return false, nil } fieldCount := int(Buffer.BytesToUint16(cmd.dataBuffer, 18)) opCount := int(Buffer.BytesToUint16(cmd.dataBuffer, 20)) if opCount > 0 { return false, NewAerospikeError(PARSE_ERROR, "Received bins that were not requested!") } key, err := cmd.parseKey(fieldCount) if err != nil { return false, err } offset := cmd.batchNamespace.offsets[cmd.index] cmd.index++ if bytes.Equal(key.digest, cmd.keys[offset].digest) { // only set the results to true; as a result, no synchronization is needed if resultCode == 0 { cmd.existsArray[offset] = true } } else { Logger.Debug("Unexpected batch key returned: " + key.namespace + "," + Buffer.BytesToHexString(key.digest)) } } return true, nil }
// Parse all results in the batch. Add records to shared list. // If the record was not found, the bins will be nil. func (cmd *batchCommandGet) parseRecordResults(ifc command, receiveSize int) (bool, error) { //Parse each message response and add it to the result array cmd.dataOffset = 0 for cmd.dataOffset < receiveSize { if err := cmd.readBytes(int(_MSG_REMAINING_HEADER_SIZE)); err != nil { return false, err } resultCode := ResultCode(cmd.dataBuffer[5] & 0xFF) // The only valid server return codes are "ok" and "not found". // If other return codes are received, then abort the batch. if resultCode != 0 && resultCode != KEY_NOT_FOUND_ERROR { return false, NewAerospikeError(resultCode) } info3 := int(cmd.dataBuffer[3]) // If cmd is the end marker of the response, do not proceed further if (info3 & _INFO3_LAST) == _INFO3_LAST { return false, nil } generation := int(Buffer.BytesToUint32(cmd.dataBuffer, 6)) expiration := TTL(int(Buffer.BytesToUint32(cmd.dataBuffer, 10))) fieldCount := int(Buffer.BytesToUint16(cmd.dataBuffer, 18)) opCount := int(Buffer.BytesToUint16(cmd.dataBuffer, 20)) key, err := cmd.parseKey(fieldCount) if err != nil { return false, err } offset := cmd.batchNamespace.offsets[cmd.index] //cmd.keyMap[string(key.digest)] cmd.index++ if bytes.Equal(key.digest, cmd.keys[offset].digest) { if resultCode == 0 { if cmd.records[offset], err = cmd.parseRecord(key, opCount, generation, expiration); err != nil { return false, err } } } else { Logger.Debug("Unexpected batch key returned: " + string(key.namespace) + "," + Buffer.BytesToHexString(key.digest)) } } return true, nil }
// String implements Stringer interface. func (vl BytesValue) String() string { return Buffer.BytesToHexString(vl) }