helics 3.7.0
Loading...
Searching...
No Matches
CoreTypes.hpp
Go to the documentation of this file.
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#pragma once
8
9#include "../helics_enums.h"
10
11#include <cstdint>
12#include <string>
13#include <string_view>
14
19namespace helics {
21enum class FederateStates : std::uint8_t {
22 CREATED,
25 EXECUTING,
27 ERRORED,
28 FINISHED,
29 UNKNOWN,
30};
31
41
43const std::string& fedStateString(FederateStates state);
44
73
75enum class MessageProcessingResult : std::int8_t {
76
78 DELAY_MESSAGE = -1,
79 NEXT_STEP = 0,
80 ITERATING = 2,
81 HALTED = 3,
83 USER_RETURN = 5,
84 ERROR_RESULT = 7,
85 REPROCESS_MESSAGE = 8, // indicator that the message needs to be processed again
86 BUSY = 10, // indicator that processing could not be done since the resource was busy
87};
90{
91 return (result >= MessageProcessingResult::NEXT_STEP);
92}
94enum class IterationResult : signed char {
95 NEXT_STEP = 0,
97 ITERATING = 2,
98 HALTED = 3,
99 ERROR_RESULT = 7
100};
101
103enum class IterationRequest : signed char {
104 NO_ITERATIONS = 0,
105 FORCE_ITERATION = 1,
107 HALT_OPERATIONS = 3,
108 ERROR_CONDITION = 7
109};
110
112enum class InterfaceType : char {
113 UNKNOWN = 'u',
114 PUBLICATION = 'p',
115 INPUT = 'i',
116 ENDPOINT = 'e',
117 FILTER = 'f',
118 TRANSLATOR = 't',
119 SINK = 's'
120};
121
122std::string_view interfaceTypeName(InterfaceType type) noexcept;
123
124} // namespace helics
constexpr auto ITERATION_COMPLETE
simplified alias to indicate that iterations have concluded
Definition CoreTypes.hpp:126
constexpr auto FORCE_ITERATION
simplified alias to force an iteration
Definition CoreTypes.hpp:130
constexpr auto ITERATE_IF_NEEDED
simplified alias to indicate that helics should iterate if warranted
Definition CoreTypes.hpp:132
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition CoreTypes.hpp:128
@ HELICS_CORE_TYPE_MPI
Definition helics_enums.h:28
@ HELICS_CORE_TYPE_WEBSOCKET
Definition helics_enums.h:51
@ HELICS_CORE_TYPE_HTTP
Definition helics_enums.h:49
@ HELICS_CORE_TYPE_TCP_SS
Definition helics_enums.h:47
@ HELICS_CORE_TYPE_INTERPROCESS
Definition helics_enums.h:33
@ HELICS_CORE_TYPE_NNG
Definition helics_enums.h:45
@ HELICS_CORE_TYPE_TCP
Definition helics_enums.h:39
@ HELICS_CORE_TYPE_DEFAULT
Definition helics_enums.h:24
@ HELICS_CORE_TYPE_ZMQ
Definition helics_enums.h:26
@ HELICS_CORE_TYPE_ZMQ_SS
Definition helics_enums.h:43
@ HELICS_CORE_TYPE_IPC
Definition helics_enums.h:37
@ HELICS_CORE_TYPE_UDP
Definition helics_enums.h:41
@ HELICS_CORE_TYPE_TEST
Definition helics_enums.h:30
@ HELICS_CORE_TYPE_INPROC
Definition helics_enums.h:55
@ HELICS_CORE_TYPE_NULL
Definition helics_enums.h:58
@ HELICS_CORE_TYPE_EMPTY
Definition helics_enums.h:61
@ HELICS_CORE_TYPE_EXTRACT
Definition helics_enums.h:63
@ HELICS_FLAG_SINGLE_THREAD_CORE
Definition helics_enums.h:136
@ HELICS_FLAG_MULTI_THREAD_CORE
Definition helics_enums.h:134
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
IterationResult
Definition CoreTypes.hpp:94
FederateStates
Definition CoreTypes.hpp:21
@ FINISHED
the federation has finished its execution
@ UNKNOWN
unknown state
@ EXECUTING
the federation has entered execution state and it now advancing in time
@ TERMINATING
the federate is in the process of shutting down
@ ERRORED
the federation has encountered an error
MessageProcessingResult
Definition CoreTypes.hpp:75
@ NEXT_STEP
indicator that the iterations have completed
@ CONTINUE_PROCESSING
the current loop should continue
@ ITERATING
indicator that the iterations need to continue
@ ERROR_RESULT
indicator that an error has occurred
@ USER_RETURN
indicator that there was a return request but no other conditions or issues
@ DELAY_MESSAGE
delay the current message and continue processing
bool returnableResult(MessageProcessingResult result)
Definition CoreTypes.hpp:89
CoreType
Definition CoreTypes.hpp:46
@ TEST
use the Test core if all federates are in the same process
@ NULLCORE
explicit core type that doesn't exist
@ EXTRACT
extract core type from later arguments/files
@ INTERPROCESS
use when all federates are on the same machine
@ INPROC
core/broker using a stripped down in process core type
@ HTTP
core/broker using web traffic
@ NNG
reserved for future Nanomsg implementation
@ ZMQ
use the Zero MQ networking protocol
@ MPI
use MPI for operation on a parallel cluster
@ TCP
use a generic TCP protocol message stream to send messages
@ EMPTY
core type that does nothing and can't communicate
@ IPC
same as INTERPROCESS
@ UDP
use UDP packets to send the data
@ WEBSOCKET
core/broker using web sockets
CoreThreading
Definition CoreTypes.hpp:33
const std::string & fedStateString(FederateStates state)
Definition FederateState.cpp:2523
IterationRequest
Definition CoreTypes.hpp:103
@ ITERATE_IF_NEEDED
indicator that the iterations need to continue
@ FORCE_ITERATION
force an iteration whether it is needed or not
@ NO_ITERATIONS
indicator that the iterations have completed
@ ERROR_CONDITION
indicator that the federate has errored and co-simulation should stop
@ HALT_OPERATIONS
indicator that the federate should halt
InterfaceType
Definition CoreTypes.hpp:112
@ TRANSLATOR
handle to a translator object
@ SINK
handle to a data sink