void RemoteCacheImpl::getWithVersion(RemoteCacheBase& remoteCacheBase, const void *k, void* b, VersionedValue* version) { assertRemoteCacheManagerIsStarted(); ScopedBuffer kbuf; ScopedBuffer& vbuf(*(ScopedBuffer *)b); remoteCacheBase.baseKeyMarshall(k, &kbuf); hrbytes keyBytes(kbuf.getBytes(), kbuf.getLength()); hr_scoped_ptr<GetWithVersionOperation> gco(operationsFactory->newGetWithVersionOperation(keyBytes)); VersionedValueImpl<hrbytes> m = gco->execute(); m.getValue().releaseTo(vbuf); version->version = m.version; }
VersionedValueImpl<std::vector<char>> GetWithVersionOperation::executeOperation(Transport& transport) { TRACE("Execute GetWithVersion(flags=%u)", flags); TRACEBYTES("key = ", key); VersionedValueImpl<std::vector<char>> result; uint8_t status = sendKeyOperation( key, transport, GET_WITH_VERSION_REQUEST, GET_WITH_VERSION_RESPONSE); if (HotRodConstants::isSuccess(status)) { result.setVersion(transport.readLong()); result.setValue(transport.readArray()); TRACE("return version = %lld", result.version); TRACEBYTES("return value = ", result.getValue()); } else { TRACE("Error status %u", status); } return result; }