33#include <google/protobuf/struct.pb.h>
40#include <disciplines.grpc.pb.h>
61 class Discipline :
public std::enable_shared_from_this<Discipline>
87 const std::vector<philote::VariableMetaData> &
var_meta() const noexcept {
return var_meta_; }
116 const std::vector<int64_t> &shape,
117 const std::string &units);
125 const std::vector<int64_t> &shape,
126 const std::string &units);
142 void AddOption(
const std::string &name,
const std::string &type);
167 virtual void SetOptions(
const google::protobuf::Struct &options_struct);
192 void SetContext(grpc::ServerContext* context)
const noexcept;
243 const std::
string &x,
244 bool allow_output_as_x);
Base class for all analysis discipline servers.
Definition discipline_server.h:57
Definition of the discipline base class.
Definition discipline.h:62
philote::StreamOptions & stream_opts()
Gets the stream options.
Definition discipline.h:107
const std::vector< philote::VariableMetaData > & var_meta() const noexcept
Definition discipline.h:87
bool IsCancelled() const noexcept
Check if the current operation has been cancelled.
void SetContext(grpc::ServerContext *context) const noexcept
Set the gRPC server context for cancellation detection.
void AddInput(const std::string &name, const std::vector< int64_t > &shape, const std::string &units)
Declares an input.
virtual void Initialize()
Initialize function that sets up available options.
std::vector< philote::PartialsMetaData > & partials_meta()
Accesses the partials meta data.
Definition discipline.h:92
std::vector< philote::VariableMetaData > var_meta_
List of variable meta data.
Definition discipline.h:250
virtual void Configure()
Configure function that is called after options are set.
const std::vector< philote::PartialsMetaData > & partials_meta() const noexcept
Definition discipline.h:93
philote::StreamOptions stream_opts_
Stream options.
Definition discipline.h:259
Discipline()
Construct a new Discipline object.
philote::DisciplineProperties properties_
Discipline properties.
Definition discipline.h:256
virtual void SetupPartials()
Setup function that is called by the server when the client calls the setup RPC.
philote::DisciplineProperties & properties()
Gets the discipline properties.
void AddOutput(const std::string &name, const std::vector< int64_t > &shape, const std::string &units)
Declares an output.
std::map< std::string, std::string > options_list_
List of options that can be set by the client.
Definition discipline.h:247
void AddOption(const std::string &name, const std::string &type)
Add an option to the discipline.
virtual void SetOptions(const google::protobuf::Struct &options_struct)
Sets up all discipline options based on a protobuf struct that the server received from the client.
void ClearContext() const noexcept
Clear the gRPC server context.
const philote::StreamOptions & stream_opts() const noexcept
Definition discipline.h:108
std::map< std::string, std::string > & options_list()
Gets the options list.
virtual void Setup()
Setup function that is called by the server when the client calls the setup RPC.
std::vector< philote::VariableMetaData > & var_meta()
Accesses the variable meta data.
Definition discipline.h:86
grpc::ServerContext * current_context_
Current gRPC server context for cancellation detection (mutable for const correctness)
Definition discipline.h:262
std::vector< int64_t > ComputePartialShape(const std::string &f, const std::string &x, bool allow_output_as_x)
Computes the shape for a partial derivative df/dx.
void DeclarePartials(const std::string &f, const std::string &x)
Declare a (set of) partial(s) for the discipline.
std::vector< philote::PartialsMetaData > partials_meta_
List of partials meta data.
Definition discipline.h:253
~Discipline() noexcept
Destroy the Discipline object.
Definition discipline.h:43