Motion Master 6.0.0-alpha.86
Next-generation motion control software
Loading...
Searching...
No Matches
procedure_manager.h File Reference
#include <atomic>
#include <cstdint>
#include <expected>
#include <functional>
#include <map>
#include <memory>
#include <mutex>
#include <optional>
#include <ostream>
#include <stop_token>
#include <string>
#include <string_view>
#include <thread>
#include <utility>
#include <vector>
#include "node/device.h"
#include "node/device_manager.h"
#include "node/procedure.h"
Include dependency graph for procedure_manager.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mm::node::ProcedureContext
 What a procedure body is given: the device it runs on, and the manager that owns it. More...
 
struct  mm::node::ProcedureError
 Why a procedure operation could not be performed. A caller must branch on this — an HTTP handler maps each kind to a different status — which is what earns a structured error here rather than the usual std::string (see CLAUDE.md's no-exceptions mandate, and libs/comm/foe_error.h for the shape). It keeps a string face so forwarding callers are unaffected. More...
 
class  mm::node::ProcedureManager
 Runs off-RT command-and-wait procedures and remembers how each one went. More...
 

Namespaces

namespace  mm
 
namespace  mm::node
 

Typedefs

using mm::node::ProcedureBody = std::function< std::expected< void, std::string >(const ProcedureContext &, ProgressReporter &, std::stop_token)>
 A procedure's work: everything one run does, as a plain callable.
 

Functions

std::ostream & mm::node::operator<< (std::ostream &os, const ProcedureError &e)
 Streams the message, so ASSERT_TRUE(r) << r.error() and spdlog {} work unchanged.