BasicColumn<T>::BasicColumn(Allocator& alloc, ref_type ref) { char* header = alloc.translate(ref); bool root_is_leaf = !Array::get_is_inner_bptree_node_from_header(header); if (root_is_leaf) { BasicArray<T>* root = new BasicArray<T>(alloc); // Throws root->init_from_mem(MemRef(header, ref)); m_array = root; } else { Array* root = new Array(alloc); // Throws root->init_from_mem(MemRef(header, ref)); m_array = root; } }
inline void ArrayStringLong::init_from_ref(ref_type ref) noexcept { REALM_ASSERT(ref); char* header = get_alloc().translate(ref); init_from_mem(MemRef(header, ref)); m_nullable = (Array::size() == 3); }
bool NetMessageSocket::readMessage() { writeMessage("GET", MemRef(key, keysize)); flush(); buf_.clear(); NetMessageReader parser(&buf_); socket_->read(buf_); parser.parse(); if (parser.state() != NetMessageReader::MESSAGE_END) { // protocol error TRACE("protocol error: %d", parser.state()); return false; } NetMessage* message = parser.message(); switch (message->type()) { case NetMessage::Array: case NetMessage::Status: case NetMessage::Number: // unexpected result type, but yeah case NetMessage::String: val.clear(); val.push_back(message->toString()); return true; case NetMessage::Nil: val.clear(); return true; case NetMessage::Error: default: TRACE("unknown type"); return false; } }
inline void ArrayBinary::init_from_ref(ref_type ref) noexcept { REALM_ASSERT(ref); char* header = get_alloc().translate(ref); init_from_mem(MemRef(header, ref, m_alloc)); }