MOTION  0.01
Framework for mixed-protocol multi-party computation
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
encrypto::motion::Gate Class Referenceabstract

#include <gate.h>

Inheritance diagram for encrypto::motion::Gate:
Inheritance graph
[legend]
Collaboration diagram for encrypto::motion::Gate:
Collaboration graph
[legend]

Public Member Functions

virtual ~Gate ()=default
 
virtual void EvaluateSetup ()=0
 
virtual void EvaluateOnline ()=0
 
const std::vector< WirePointer > & GetOutputWires () const
 
void Clear ()
 
void RegisterWaitingFor (std::size_t wire_id)
 
void SignalDependencyIsReady ()
 
bool AreDependenciesReady ()
 
void SetSetupIsReady ()
 
void SetOnlineIsReady ()
 
void WaitSetup () const
 
void WaitOnline () const
 
bool SetupIsReady () const
 
std::int64_t GetId () const
 
 Gate (Gate &)=delete
 

Protected Member Functions

 Gate (Backend &backend)
 
RegisterGetRegister ()
 
ConfigurationGetConfiguration ()
 
LoggerGetLogger ()
 
BaseProviderGetBaseProvider ()
 
MtProviderGetMtProvider ()
 
SpProviderGetSpProvider ()
 
SbProviderGetSbProvider ()
 
communication::CommunicationLayerGetCommunicationLayer ()
 
OtProviderGetOtProvider (const std::size_t i)
 

Protected Attributes

std::vector< WirePointeroutput_wires_
 
Backendbackend_
 
std::int64_t gate_id_ = -1
 
std::unordered_set< std::size_t > wire_dependencies_
 
GateType gate_type_ = GateType::kInvalid
 
std::atomic< bool > setup_is_ready_ = false
 
std::atomic< bool > online_is_ready_ = false
 
std::atomic< bool > requires_online_interaction_ = false
 
std::atomic< bool > added_to_active_queue_ = false
 
FiberCondition setup_is_ready_condition_
 
FiberCondition online_is_ready_condition_
 
std::atomic< std::size_t > number_of_ready_dependencies_ = 0
 
bool own_output_wires_ {true}
 

Constructor & Destructor Documentation

◆ ~Gate()

virtual encrypto::motion::Gate::~Gate ( )
virtualdefault

◆ Gate() [1/2]

encrypto::motion::Gate::Gate ( Gate )
delete

◆ Gate() [2/2]

encrypto::motion::Gate::Gate ( Backend backend)
protected

Member Function Documentation

◆ AreDependenciesReady()

bool encrypto::motion::Gate::AreDependenciesReady ( )
inline

◆ Clear()

void encrypto::motion::Gate::Clear ( )

◆ EvaluateOnline()

virtual void encrypto::motion::Gate::EvaluateOnline ( )
pure virtual

Implemented in encrypto::motion::SimdifyGate, encrypto::motion::SubsetGate, encrypto::motion::UnsimdifyGate, encrypto::motion::proto::arithmetic_gmw::SquareGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::MultiplicationGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::SubtractionGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::AdditionGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::OutputGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::OutputGate< T >, encrypto::motion::proto::ConstantArithmeticMultiplicationGate< T, typename >, encrypto::motion::proto::boolean_gmw::MuxGate, encrypto::motion::proto::ConstantArithmeticAdditionGate< T, typename >, encrypto::motion::proto::bmr::AndGate, encrypto::motion::proto::bmr::InvGate, encrypto::motion::proto::boolean_gmw::AndGate, encrypto::motion::proto::bmr::XorGate, encrypto::motion::proto::boolean_gmw::InvGate, encrypto::motion::proto::ConstantArithmeticInputGate< T >, encrypto::motion::proto::arithmetic_gmw::InputGate< T, typename >, encrypto::motion::ArithmeticGmwToBmrGate, encrypto::motion::proto::boolean_gmw::XorGate, encrypto::motion::proto::bmr::OutputGate, encrypto::motion::BooleanGmwToBmrGate, encrypto::motion::proto::boolean_gmw::OutputGate, encrypto::motion::proto::bmr::InputGate, encrypto::motion::proto::ConstantBooleanInputGate, encrypto::motion::BmrToBooleanGmwGate, encrypto::motion::proto::boolean_gmw::InputGate, and encrypto::motion::GmwToArithmeticGate< T, typename >.

◆ EvaluateSetup()

virtual void encrypto::motion::Gate::EvaluateSetup ( )
pure virtual

Implemented in encrypto::motion::SimdifyGate, encrypto::motion::SubsetGate, encrypto::motion::UnsimdifyGate, encrypto::motion::proto::arithmetic_gmw::SquareGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::MultiplicationGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::SubtractionGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::AdditionGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::OutputGate< T, typename >, encrypto::motion::proto::arithmetic_gmw::OutputGate< T >, encrypto::motion::proto::ConstantArithmeticMultiplicationGate< T, typename >, encrypto::motion::proto::boolean_gmw::MuxGate, encrypto::motion::proto::ConstantArithmeticAdditionGate< T, typename >, encrypto::motion::proto::bmr::AndGate, encrypto::motion::proto::bmr::InvGate, encrypto::motion::proto::boolean_gmw::AndGate, encrypto::motion::proto::bmr::XorGate, encrypto::motion::proto::boolean_gmw::InvGate, encrypto::motion::proto::ConstantArithmeticInputGate< T >, encrypto::motion::ArithmeticGmwToBmrGate, encrypto::motion::proto::boolean_gmw::XorGate, encrypto::motion::proto::arithmetic_gmw::InputGate< T, typename >, encrypto::motion::proto::bmr::OutputGate, encrypto::motion::BooleanGmwToBmrGate, encrypto::motion::proto::boolean_gmw::OutputGate, encrypto::motion::proto::bmr::InputGate, encrypto::motion::proto::ConstantBooleanInputGate, encrypto::motion::BmrToBooleanGmwGate, encrypto::motion::proto::boolean_gmw::InputGate, and encrypto::motion::GmwToArithmeticGate< T, typename >.

◆ GetBaseProvider()

BaseProvider & encrypto::motion::Gate::GetBaseProvider ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetCommunicationLayer()

communication::CommunicationLayer & encrypto::motion::Gate::GetCommunicationLayer ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetConfiguration()

Configuration & encrypto::motion::Gate::GetConfiguration ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetId()

std::int64_t encrypto::motion::Gate::GetId ( ) const
inline
Here is the caller graph for this function:

◆ GetLogger()

Logger & encrypto::motion::Gate::GetLogger ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMtProvider()

MtProvider & encrypto::motion::Gate::GetMtProvider ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOtProvider()

OtProvider & encrypto::motion::Gate::GetOtProvider ( const std::size_t  i)
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOutputWires()

const std::vector<WirePointer>& encrypto::motion::Gate::GetOutputWires ( ) const
inline

◆ GetRegister()

Register & encrypto::motion::Gate::GetRegister ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetSbProvider()

SbProvider & encrypto::motion::Gate::GetSbProvider ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetSpProvider()

SpProvider & encrypto::motion::Gate::GetSpProvider ( )
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RegisterWaitingFor()

void encrypto::motion::Gate::RegisterWaitingFor ( std::size_t  wire_id)
Here is the caller graph for this function:

◆ SetOnlineIsReady()

void encrypto::motion::Gate::SetOnlineIsReady ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetSetupIsReady()

void encrypto::motion::Gate::SetSetupIsReady ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetupIsReady()

bool encrypto::motion::Gate::SetupIsReady ( ) const
inline

◆ SignalDependencyIsReady()

void encrypto::motion::Gate::SignalDependencyIsReady ( )

◆ WaitOnline()

void encrypto::motion::Gate::WaitOnline ( ) const
Here is the call graph for this function:

◆ WaitSetup()

void encrypto::motion::Gate::WaitSetup ( ) const
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ added_to_active_queue_

std::atomic<bool> encrypto::motion::Gate::added_to_active_queue_ = false
protected

◆ backend_

Backend& encrypto::motion::Gate::backend_
protected

◆ gate_id_

std::int64_t encrypto::motion::Gate::gate_id_ = -1
protected

◆ gate_type_

GateType encrypto::motion::Gate::gate_type_ = GateType::kInvalid
protected

◆ number_of_ready_dependencies_

std::atomic<std::size_t> encrypto::motion::Gate::number_of_ready_dependencies_ = 0
protected

◆ online_is_ready_

std::atomic<bool> encrypto::motion::Gate::online_is_ready_ = false
protected

◆ online_is_ready_condition_

FiberCondition encrypto::motion::Gate::online_is_ready_condition_
protected

◆ output_wires_

std::vector<WirePointer> encrypto::motion::Gate::output_wires_
protected

◆ own_output_wires_

bool encrypto::motion::Gate::own_output_wires_ {true}
protected

◆ requires_online_interaction_

std::atomic<bool> encrypto::motion::Gate::requires_online_interaction_ = false
protected

◆ setup_is_ready_

std::atomic<bool> encrypto::motion::Gate::setup_is_ready_ = false
protected

◆ setup_is_ready_condition_

FiberCondition encrypto::motion::Gate::setup_is_ready_condition_
protected

◆ wire_dependencies_

std::unordered_set<std::size_t> encrypto::motion::Gate::wire_dependencies_
protected

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