Exemplo n.º 1
0
PIpcMessage::PIpcMessage(uint32_t capacity)
    : Pickle(capacity),
      header_(0) {

  if (capacity >= sizeof(Header)) {
    header_ = reinterpret_cast<Header*>(payload());
    if (header_) {
      header_->routing = header_->id = header_->type = header_->flags = 0;
      updateIter(sizeof(Header));
    }
  }
}
Exemplo n.º 2
0
uint64_t RowStoreScanProcessor::processUpdateRecord(const UpdateLogEntry* ptr, uint64_t baseVersion,
        uint64_t& validTo) {
    UpdateRecordIterator updateIter(ptr, baseVersion);
    for (; !updateIter.done(); updateIter.next()) {
        auto entry = LogEntry::entryFromData(reinterpret_cast<const char*>(updateIter.value()));

        // Check if the entry marks a deletion: Skip element
        if (entry->type() == crossbow::to_underlying(RecordType::DELETE)) {
            validTo = updateIter->version;
            continue;
        }

        processRowRecord(updateIter->key, updateIter->version, validTo, updateIter->data(),
                entry->size() - sizeof(UpdateLogEntry));
        validTo = updateIter->version;
    }
    return updateIter.lowestVersion();
}
Exemplo n.º 3
0
PIpcMessage::PIpcMessage(int32_t routing_id, uint16_t type, uint32_t payload_size)
    : Pickle(sizeof(Header) + payload_size) {

  header_ = reinterpret_cast<Header*>(payload());
  if (header_) {
    header_->routing = routing_id;
    header_->type = type;
	header_->flags = 0;

	pthread_mutex_lock(&s_nextMessageIdMutex);

	s_nextMessageId++;
	// Avoid wraparound
	if (s_nextMessageId < 0)
		s_nextMessageId = 1;
	
	header_->id = s_nextMessageId;

	pthread_mutex_unlock(&s_nextMessageIdMutex);
	
    updateIter(sizeof(Header));
  }
}