Bitcoin ABC  0.24.7
P2P Digital Currency
Classes | Macros | Functions | Variables
validationinterface.cpp File Reference
#include <validationinterface.h>
#include <chain.h>
#include <consensus/validation.h>
#include <logging.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <scheduler.h>
#include <future>
#include <tuple>
#include <unordered_map>
#include <utility>
Include dependency graph for validationinterface.cpp:

Go to the source code of this file.

Classes

struct  MainSignalsInstance
 The MainSignalsInstance manages a list of shared_ptr<CValidationInterface> callbacks. More...
 
struct  MainSignalsInstance::ListEntry
 List entries consist of a callback pointer and reference count. More...
 

Macros

#define ENQUEUE_AND_LOG_EVENT(event, fmt, name, ...)
 
#define LOG_EVENT(fmt, ...)   LogPrint(BCLog::VALIDATION, fmt "\n", __VA_ARGS__)
 

Functions

CMainSignalsGetMainSignals ()
 
void RegisterSharedValidationInterface (std::shared_ptr< CValidationInterface > callbacks)
 Register subscriber. More...
 
void RegisterValidationInterface (CValidationInterface *callbacks)
 Register subscriber. More...
 
void UnregisterSharedValidationInterface (std::shared_ptr< CValidationInterface > callbacks)
 Unregister subscriber. More...
 
void UnregisterValidationInterface (CValidationInterface *callbacks)
 Unregister subscriber. More...
 
void UnregisterAllValidationInterfaces ()
 Unregister all subscribers. More...
 
void CallFunctionInValidationInterfaceQueue (std::function< void()> func)
 Pushes a function to callback onto the notification queue, guaranteeing any callbacks generated prior to now are finished when the function is called. More...
 
void SyncWithValidationInterfaceQueue ()
 This is a synonym for the following, which asserts certain locks are not held: std::promise<void> promise; CallFunctionInValidationInterfaceQueue([&promise] { promise.set_value(); }); promise.get_future().wait();. More...
 

Variables

static CMainSignals g_signals
 

Macro Definition Documentation

◆ ENQUEUE_AND_LOG_EVENT

#define ENQUEUE_AND_LOG_EVENT (   event,
  fmt,
  name,
  ... 
)
Value:
do { \
auto local_name = (name); \
LOG_EVENT("Enqueuing " fmt, local_name, __VA_ARGS__); \
m_internals->m_schedulerClient.AddToProcessQueue([=] { \
LOG_EVENT(fmt, local_name, __VA_ARGS__); \
event(); \
}); \
} while (0)

Definition at line 174 of file validationinterface.cpp.

◆ LOG_EVENT

#define LOG_EVENT (   fmt,
  ... 
)    LogPrint(BCLog::VALIDATION, fmt "\n", __VA_ARGS__)

Definition at line 184 of file validationinterface.cpp.

Function Documentation

◆ CallFunctionInValidationInterfaceQueue()

void CallFunctionInValidationInterfaceQueue ( std::function< void()>  func)

Pushes a function to callback onto the notification queue, guaranteeing any callbacks generated prior to now are finished when the function is called.

Be very careful blocking on func to be called if any locks are held - validation interface clients may not be able to make progress as they often wait for things like cs_main, so blocking until func is called with cs_main will result in a deadlock (that DEBUG_LOCKORDER will miss).

Definition at line 158 of file validationinterface.cpp.

Here is the caller graph for this function:

◆ GetMainSignals()

CMainSignals& GetMainSignals ( )

Definition at line 122 of file validationinterface.cpp.

Here is the caller graph for this function:

◆ RegisterSharedValidationInterface()

void RegisterSharedValidationInterface ( std::shared_ptr< CValidationInterface callbacks)

Register subscriber.

Definition at line 126 of file validationinterface.cpp.

Here is the caller graph for this function:

◆ RegisterValidationInterface()

void RegisterValidationInterface ( CValidationInterface callbacks)

Register subscriber.

Definition at line 133 of file validationinterface.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SyncWithValidationInterfaceQueue()

void SyncWithValidationInterfaceQueue ( )

This is a synonym for the following, which asserts certain locks are not held: std::promise<void> promise; CallFunctionInValidationInterfaceQueue([&promise] { promise.set_value(); }); promise.get_future().wait();.

Definition at line 162 of file validationinterface.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UnregisterAllValidationInterfaces()

void UnregisterAllValidationInterfaces ( )

Unregister all subscribers.

Definition at line 151 of file validationinterface.cpp.

Here is the caller graph for this function:

◆ UnregisterSharedValidationInterface()

void UnregisterSharedValidationInterface ( std::shared_ptr< CValidationInterface callbacks)

Unregister subscriber.

Definition at line 140 of file validationinterface.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UnregisterValidationInterface()

void UnregisterValidationInterface ( CValidationInterface callbacks)

Unregister subscriber.

DEPRECATED. This is not safe to use when the RPC server or main message handler thread is running.

Definition at line 145 of file validationinterface.cpp.

Here is the caller graph for this function:

Variable Documentation

◆ g_signals

CMainSignals g_signals
static

Definition at line 98 of file validationinterface.cpp.

name
const char * name
Definition: rest.cpp:43