Rosetta
Public Types | Public Slots | Signals | Public Member Functions | Public Attributes | Private Slots | Private Member Functions | Private Attributes | Friends | List of all members
ui::task::Node Class Referencefinal

#include <node.h>

Inheritance diagram for ui::task::Node:
Inheritance graph
[legend]

Public Types

enum class  Flags {
  none = 0 , data_in = 1 , data_out = 2 , topology_in = 4 ,
  topology_out = 8 , all = data_in | data_out | topology_in | topology_out
}
 
using Map = std::map< QString, NodeSP >
 
using Key = Map::key_type
 
using SetDataCallback = std::function< void(QJsonValue const &) >
 
using GetDataCallback = std::function< QJsonValue(void) >
 
using TopologyUpdatedCallback = std::function< void(Node const *, std::vector< QString > const &new_keys, std::vector< QString > const &errased_keys) >
 

Public Slots

void data_is_fresh (bool recursive)
 Emitted when node recieve new topology from remote server. More...
 
void data_is_outdated ()
 assume that server have an updated version of data with (blob_id, blob_modification_time) and initiate sync More...
 

Signals

void synced ()
 Emitted when node finished network operation. More...
 
void tree_synced ()
 Emitted when node and all its leafs finished synced operation. More...
 
void syncing ()
 Emitted when node or sub-node syncing state changed. More...
 

Public Member Functions

 Node (Flags _flags=Flags::none, QUuid _node_id=QUuid::createUuid())
 
 Node (QString const &_type, Flags _flags, QUuid _node_id=QUuid::createUuid())
 
 ~Node ()
 
QString type () const
 return node type as string More...
 
QUuid node_id () const
 
Flags flags () const
 
void add (Key const &, NodeSP const &)
 Add new leaf this node, If node was already added to some other Node then remove it first. More...
 
int size () const
 
NodeSP leaf (int i) const
 
NodeSP leaf (Key const &) const
 
Key const * find (Node *leaf) const
 
bool erase (Node *leaf)
 
Nodeparent () const
 
int node_index (Node *node)
 
TimeStamp local_modification_time () const
 
void execute (std::function< void(Node &) > const &f)
 
void execute (QUuid const &node_id, std::function< void(Node &) > const &f)
 
void set_data_callback (SetDataCallback const &set_data)
 
void get_data_callback (GetDataCallback const &get_data)
 
void topology_updated_callback (TopologyUpdatedCallback const &topology_updated_callback)
 
bool operator== (Node const &r) const
 
bool operator!= (Node const &r) const
 
int is_syncing (bool recursive=false) const
 
int tree_size () const
 

Public Attributes

TimeStamp const _T_unknown_ = 0
 
TimeStamp const _T_outdated_ = 1
 

Private Slots

void data_upload_finished ()
 subscribe to server update channel. This signal can be used for all, even non-root nodes. More...
 
void data_download_finished ()
 
void update_from_json (QJsonObject const &root, bool forced)
 

Private Member Functions

void abort_network_operation ()
 
void node_synced ()
 

Private Attributes

QString type_
 
Flags flags_ = Flags::none
 
QUuid node_id_
 UUID of Task to which this node belongs to. More...
 
Nodeparent_ = nullptr
 
Map leafs_
 
SetDataCallback set_data_
 
GetDataCallback get_data_
 
TopologyUpdatedCallback topology_updated_
 
bool recursive_
 
QPointer< QNetworkReply > reply_
 
bool syncing_ = false
 
TimeStamp local_modification_time_ = _T_outdated_
 
TimeStamp server_modification_time_ = _T_unknown_
 

Friends

QDataStream & operator<< (QDataStream &, Node const &)
 
QDataStream & operator>> (QDataStream &, Node &)
 

Member Typedef Documentation

◆ GetDataCallback

using ui::task::Node::GetDataCallback = std::function< QJsonValue (void) >

◆ Key

using ui::task::Node::Key = Map::key_type

◆ Map

using ui::task::Node::Map = std::map< QString, NodeSP >

◆ SetDataCallback

using ui::task::Node::SetDataCallback = std::function< void (QJsonValue const &) >

◆ TopologyUpdatedCallback

using ui::task::Node::TopologyUpdatedCallback = std::function< void (Node const *, std::vector<QString> const & new_keys, std::vector<QString> const & errased_keys) >

Member Enumeration Documentation

◆ Flags

enum ui::task::Node::Flags
strong
Enumerator
none 
data_in 
data_out 
topology_in 
topology_out 
all 

Constructor & Destructor Documentation

◆ Node() [1/2]

ui::task::Node::Node ( Flags  _flags = Flags::none,
QUuid  _node_id = QUuid::createUuid() 
)
explicit

◆ Node() [2/2]

ui::task::Node::Node ( QString const &  _type,
Flags  _flags,
QUuid  _node_id = QUuid::createUuid() 
)
explicit

◆ ~Node()

ui::task::Node::~Node ( )

Member Function Documentation

◆ abort_network_operation()

void ui::task::Node::abort_network_operation ( )
private

References reply_, and syncing_.

Referenced by data_is_fresh(), data_is_outdated(), and ~Node().

◆ add()

void ui::task::Node::add ( Key const &  key,
NodeSP const &  node 
)

Add new leaf this node, If node was already added to some other Node then remove it first.

References subloop_histogram::key, and leafs_.

Referenced by job_manager.MoveStatsWindow::__init__(), and pyrosetta.bindings.pose.ResidueLabelAccessor::discard().

◆ data_download_finished

void ui::task::Node::data_download_finished ( void  )
privateslot

◆ data_is_fresh

void ui::task::Node::data_is_fresh ( bool  recursive)
slot

◆ data_is_outdated

void ui::task::Node::data_is_outdated ( )
slot

assume that server have an updated version of data with (blob_id, blob_modification_time) and initiate sync

References abort_network_operation(), data_download_finished(), ui::task::network_access_manager(), node_id_, reply_, ui::task::server_url(), syncing(), syncing_, and cache_trajectory::url.

Referenced by data_download_finished().

◆ data_upload_finished

void ui::task::Node::data_upload_finished ( void  )
privateslot

subscribe to server update channel. This signal can be used for all, even non-root nodes.

References data_is_fresh(), ui::task::get_retry_interval(), extract_by_sidechain_sasa_score::l, leafs_, local_modification_time_, node_synced(), recursive_, reply_, server_modification_time_, synced(), and syncing_.

Referenced by data_is_fresh().

◆ erase()

bool ui::task::Node::erase ( Node leaf)

◆ execute() [1/2]

void ui::task::Node::execute ( QUuid const &  node_id,
std::function< void(Node &) > const &  f 
)

◆ execute() [2/2]

void ui::task::Node::execute ( std::function< void(Node &) > const &  f)

◆ find()

Node::Key const * ui::task::Node::find ( Node leaf) const

◆ flags()

Flags ui::task::Node::flags ( ) const
inline

References flags_.

◆ get_data_callback()

void ui::task::Node::get_data_callback ( GetDataCallback const &  get_data)
inline

References detail::get_data(), and get_data_.

◆ is_syncing()

int ui::task::Node::is_syncing ( bool  recursive = false) const

◆ leaf() [1/2]

NodeSP ui::task::Node::leaf ( int  i) const

References create_a3b_hbs::i, leafs_, and size().

Referenced by data_is_fresh(), and erase().

◆ leaf() [2/2]

NodeSP ui::task::Node::leaf ( Key const &  key) const

References subloop_histogram::key, and leafs_.

◆ local_modification_time()

TimeStamp ui::task::Node::local_modification_time ( ) const
inline

◆ node_id()

QUuid ui::task::Node::node_id ( ) const
inline

◆ node_index()

int ui::task::Node::node_index ( Node node)

◆ node_synced()

void ui::task::Node::node_synced ( )
private

◆ operator!=()

bool ui::task::Node::operator!= ( Node const &  r) const
inline

References create_a3b_hbs::r.

◆ operator==()

bool ui::task::Node::operator== ( Node const &  r) const

◆ parent()

Node* ui::task::Node::parent ( ) const
inline

References parent_.

◆ set_data_callback()

void ui::task::Node::set_data_callback ( SetDataCallback const &  set_data)
inline

References set_data_.

◆ size()

int ui::task::Node::size ( ) const
inline

References leafs_.

Referenced by leaf().

◆ synced

void ui::task::Node::synced ( )
signal

Emitted when node finished network operation.

Referenced by data_download_finished(), and data_upload_finished().

◆ syncing

void ui::task::Node::syncing ( )
signal

Emitted when node or sub-node syncing state changed.

Referenced by data_is_fresh(), data_is_outdated(), and node_synced().

◆ topology_updated_callback()

void ui::task::Node::topology_updated_callback ( TopologyUpdatedCallback const &  topology_updated_callback)
inline

◆ tree_size()

int ui::task::Node::tree_size ( ) const

References leafs_, and create_a3b_hbs::r.

◆ tree_synced

void ui::task::Node::tree_synced ( )
signal

Emitted when node and all its leafs finished synced operation.

Referenced by node_synced().

◆ type()

QString ui::task::Node::type ( ) const
inline

return node type as string

References type_.

Referenced by schema.Move::__repr__(), schema.NumpyCache::__repr__(), and update_from_json().

◆ update_from_json

void ui::task::Node::update_from_json ( QJsonObject const &  root,
bool  forced 
)
privateslot

Friends And Related Function Documentation

◆ operator<<

QDataStream& operator<< ( QDataStream &  out,
Node const &  n 
)
friend

◆ operator>>

QDataStream& operator>> ( QDataStream &  in,
Node n 
)
friend

Member Data Documentation

◆ _T_outdated_

TimeStamp const ui::task::Node::_T_outdated_ = 1

◆ _T_unknown_

TimeStamp const ui::task::Node::_T_unknown_ = 0

◆ flags_

Flags ui::task::Node::flags_ = Flags::none
private

◆ get_data_

GetDataCallback ui::task::Node::get_data_
private

Referenced by data_is_fresh(), and get_data_callback().

◆ leafs_

Map ui::task::Node::leafs_
private

◆ local_modification_time_

TimeStamp ui::task::Node::local_modification_time_ = _T_outdated_
private

◆ node_id_

QUuid ui::task::Node::node_id_
private

UUID of Task to which this node belongs to.

UUID of this node, use null UUID for a root node

Referenced by data_download_finished(), data_is_fresh(), data_is_outdated(), execute(), node_id(), and operator==().

◆ parent_

Node* ui::task::Node::parent_ = nullptr
private

Referenced by data_is_fresh(), node_synced(), and parent().

◆ recursive_

bool ui::task::Node::recursive_
private

◆ reply_

QPointer<QNetworkReply> ui::task::Node::reply_
private

◆ server_modification_time_

TimeStamp ui::task::Node::server_modification_time_ = _T_unknown_
private

◆ set_data_

SetDataCallback ui::task::Node::set_data_
private

◆ syncing_

bool ui::task::Node::syncing_ = false
private

◆ topology_updated_

TopologyUpdatedCallback ui::task::Node::topology_updated_
private

◆ type_

QString ui::task::Node::type_
private

Referenced by data_is_fresh(), operator==(), and type().


The documentation for this class was generated from the following files: