本文整理汇总了C++中SharedGroup类的典型用法代码示例。如果您正苦于以下问题:C++ SharedGroup类的具体用法?C++ SharedGroup怎么用?C++ SharedGroup使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SharedGroup类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_deliver
bool ResultsNotifier::do_deliver(SharedGroup& sg)
{
auto lock = lock_target();
// Target realm being null here indicates that we were unregistered while we
// were in the process of advancing the Realm version and preparing for
// delivery, i.e. the results was destroyed from the "wrong" thread
if (!get_realm()) {
return false;
}
// We can get called before the query has actually had the chance to run if
// we're added immediately before a different set of async results are
// delivered
if (!m_initial_run_complete) {
return false;
}
REALM_ASSERT(!m_query_handover);
if (m_tv_handover) {
m_tv_handover->version = version();
Results::Internal::set_table_view(*m_target_results,
std::move(*sg.import_from_handover(std::move(m_tv_handover))));
}
REALM_ASSERT(!m_tv_handover);
return true;
}
示例2: do_attach_to
void ResultsNotifier::do_attach_to(SharedGroup& sg)
{
REALM_ASSERT(m_query_handover);
m_query = sg.import_from_handover(std::move(m_query_handover));
m_sort = SortDescriptor::create_from_and_consume_patch(m_sort_handover, *m_query->get_table());
m_distinct = SortDescriptor::create_from_and_consume_patch(m_distinct_handover, *m_query->get_table());
}
示例3: do_detach_from
void ResultsNotifier::do_detach_from(SharedGroup& sg)
{
REALM_ASSERT(m_query);
REALM_ASSERT(!m_tv.is_attached());
m_query_handover = sg.export_for_handover(*m_query, MutableSourcePayload::Move);
m_query = nullptr;
}
示例4: do_detach_from
void ObjectNotifier::do_detach_from(SharedGroup& sg)
{
REALM_ASSERT(!m_handover);
if (m_row) {
m_handover = sg.export_for_handover(*m_row);
m_row = nullptr;
}
}
示例5: do_detach_from
void ListNotifier::do_detach_from(SharedGroup& sg)
{
REALM_ASSERT(!m_lv_handover);
if (m_lv) {
m_lv_handover = sg.export_linkview_for_handover(m_lv);
m_lv = {};
}
}
示例6: do_detach_from
void PrimitiveListNotifier::do_detach_from(SharedGroup& sg)
{
REALM_ASSERT(!m_table_handover);
if (m_table) {
m_table_handover = sg.export_table_for_handover(m_table);
m_table = {};
}
}
示例7: do_detach_from
void ResultsNotifier::do_detach_from(SharedGroup& sg)
{
REALM_ASSERT(m_query);
REALM_ASSERT(!m_tv.is_attached());
SortDescriptor::generate_patch(m_sort, m_sort_handover);
SortDescriptor::generate_patch(m_distinct, m_distinct_handover);
m_query_handover = sg.export_for_handover(*m_query, MutableSourcePayload::Move);
m_query = nullptr;
}
示例8: do_prepare_handover
void ResultsNotifier::do_prepare_handover(SharedGroup& sg)
{
if (!m_tv.is_attached()) {
// if the table version didn't change we can just reuse the same handover
// object and bump its version to the current SG version
if (m_tv_handover)
m_tv_handover->version = sg.get_version_of_current_transaction();
return;
}
REALM_ASSERT(m_tv.is_in_sync());
m_tv_handover = sg.export_for_handover(m_tv, MutableSourcePayload::Move);
add_changes(std::move(m_changes));
REALM_ASSERT(m_changes.empty());
// detach the TableView as we won't need it again and keeping it around
// makes advance_read() much more expensive
m_tv = {};
}
示例9: deliver
void NotifierPackage::deliver(SharedGroup& sg)
{
if (m_error) {
for (auto& notifier : m_notifiers)
notifier->deliver_error(m_error);
return;
}
// Can't deliver while in a write transaction
if (sg.get_transact_stage() != SharedGroup::transact_Reading)
return;
for (auto& notifier : m_notifiers)
notifier->deliver(sg);
}
示例10: do_prepare_handover
void ResultsNotifier::do_prepare_handover(SharedGroup& sg)
{
if (!m_tv.is_attached()) {
return;
}
REALM_ASSERT(m_tv.is_in_sync());
m_initial_run_complete = true;
m_tv_handover = sg.export_for_handover(m_tv, MutableSourcePayload::Move);
add_changes(std::move(m_changes));
REALM_ASSERT(m_changes.empty());
// detach the TableView as we won't need it again and keeping it around
// makes advance_read() much more expensive
m_tv = {};
}
示例11: deliver
void ResultsNotifier::deliver(SharedGroup& sg)
{
auto lock = lock_target();
// Target realm being null here indicates that we were unregistered while we
// were in the process of advancing the Realm version and preparing for
// delivery, i.e. the results was destroyed from the "wrong" thread
if (!get_realm()) {
return;
}
REALM_ASSERT(!m_query_handover);
if (m_tv_to_deliver) {
Results::Internal::set_table_view(*m_target_results,
std::move(*sg.import_from_handover(std::move(m_tv_to_deliver))));
}
REALM_ASSERT(!m_tv_to_deliver);
}
示例12: do_attach_to
void ResultsNotifier::do_attach_to(SharedGroup& sg)
{
REALM_ASSERT(m_query_handover);
m_query = sg.import_from_handover(std::move(m_query_handover));
}
示例13: do_attach_to
void ObjectNotifier::do_attach_to(SharedGroup& sg)
{
REALM_ASSERT(m_handover);
REALM_ASSERT(!m_row);
m_row = sg.import_from_handover(std::move(m_handover));
}
示例14: promote_to_write
inline void LangBindHelper::promote_to_write(SharedGroup& sg,
TransactLogRegistry& log_registry)
{
sg.promote_to_write(log_registry);
}
示例15: advance_read
inline void LangBindHelper::advance_read(SharedGroup& sg,
TransactLogRegistry& log_registry)
{
sg.advance_read(log_registry);
}