helics 3.7.0
Loading...
Searching...
No Matches
core/Core.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 "LocalFederateId.hpp"
10#include "core-data.hpp"
11
12#include <functional>
13#include <memory>
14#include <string>
15#include <utility>
16#include <vector>
17
37namespace helics {
38class CoreFederateInfo;
39
41class Core {
42 public:
44 Core() = default;
46 virtual ~Core() = default;
47
54 virtual void configure(std::string_view configureString) = 0;
61 virtual void configureFromArgs(int argc, char* argv[]) = 0;
68 virtual void configureFromVector(std::vector<std::string> args) = 0;
72 virtual bool isConfigured() const = 0;
73
78 virtual bool connect() = 0;
82 virtual bool isConnected() const = 0;
83
87 virtual void disconnect() = 0;
88
89 /*return true if the core has an error*/
90 virtual bool hasError() const = 0;
94 virtual bool waitForDisconnect(
95 std::chrono::milliseconds msToWait = std::chrono::milliseconds(0)) const = 0;
96
99 virtual bool isOpenToNewFederates() const = 0;
102 virtual const std::string& getIdentifier() const = 0;
104 virtual const std::string& getAddress() const = 0;
105
112 virtual void globalError(LocalFederateId federateID,
113 int32_t errorCode,
114 std::string_view errorString) = 0;
115
122 virtual void
123 localError(LocalFederateId federateID, int32_t errorCode, std::string_view errorString) = 0;
124
126 virtual int getErrorCode() const = 0;
128 virtual std::string getErrorMessage() const = 0;
135 virtual void finalize(LocalFederateId federateID) = 0;
136
166 virtual bool enterInitializingMode(LocalFederateId federateID,
167 IterationRequest iterate = NO_ITERATION) = 0;
168
172 virtual void setCoreReadyToInit() = 0;
173
187 IterationRequest iterate = NO_ITERATION) = 0;
188
197 virtual LocalFederateId registerFederate(std::string_view name,
198 const CoreFederateInfo& info) = 0;
199
204 virtual const std::string& getFederateName(LocalFederateId federateID) const = 0;
205
210 virtual LocalFederateId getFederateId(std::string_view name) const = 0;
211
216 virtual int32_t getFederationSize() = 0;
217
238 virtual Time timeRequest(LocalFederateId federateID, Time next) = 0;
239
268 virtual iteration_time
270
280 std::chrono::milliseconds msToWait) = 0;
286 virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time timeValue) = 0;
292 virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const = 0;
298 virtual void
299 setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propValue) = 0;
305 virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const = 0;
310 virtual Time getCurrentTime(LocalFederateId federateID) const = 0;
311
318 virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue) = 0;
319
326 virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const = 0;
342 std::string_view key,
343 std::string_view type,
344 std::string_view units) = 0;
345
351 std::string_view key) const = 0;
352
363 std::string_view key,
364 std::string_view type,
365 std::string_view units) = 0;
370 virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const = 0;
371
375 virtual const std::string& getHandleName(InterfaceHandle handle) const = 0;
380 virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove) = 0;
381
385 virtual const std::string& getExtractionUnits(InterfaceHandle handle) const = 0;
394 virtual const std::string& getInjectionUnits(InterfaceHandle handle) const = 0;
395
403 virtual const std::string& getInjectionType(InterfaceHandle handle) const = 0;
404
411 virtual const std::string& getExtractionType(InterfaceHandle handle) const = 0;
412
418 virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value) = 0;
419
424 virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const = 0;
425
429 virtual void closeHandle(InterfaceHandle handle) = 0;
437 virtual void setValue(InterfaceHandle handle, const char* data, uint64_t len) = 0;
438
445 virtual const std::shared_ptr<const SmallBuffer>& getValue(InterfaceHandle handle,
446 uint32_t* inputIndex = nullptr) = 0;
447
452 virtual const std::vector<std::shared_ptr<const SmallBuffer>>&
454
463 virtual const std::vector<InterfaceHandle>& getValueUpdates(LocalFederateId federateID) = 0;
464
477 std::string_view name,
478 std::string_view type) = 0;
479
487 std::string_view name,
488 std::string_view type) = 0;
489
495 std::string_view name) const = 0;
496
503 virtual InterfaceHandle registerDataSink(LocalFederateId federateID, std::string_view name) = 0;
504
510 std::string_view name) const = 0;
511
523 virtual InterfaceHandle registerCloningFilter(std::string_view filterName,
524 std::string_view type_in,
525 std::string_view type_out) = 0;
526
538 virtual InterfaceHandle registerFilter(std::string_view filterName,
539 std::string_view type_in,
540 std::string_view type_out) = 0;
541
551 virtual InterfaceHandle registerTranslator(std::string_view translatorName,
552 std::string_view endpointType,
553 std::string_view units) = 0;
554
567 std::string_view dest,
568 InterfaceType hint = InterfaceType::UNKNOWN) = 0;
569
579 virtual void addSourceTarget(InterfaceHandle handle,
580 std::string_view name,
581 InterfaceType hint = InterfaceType::UNKNOWN) = 0;
582
587 virtual const std::string& getDestinationTargets(InterfaceHandle handle) const = 0;
588
592 virtual const std::string& getSourceTargets(InterfaceHandle handle) const = 0;
593
598 virtual InterfaceHandle getFilter(std::string_view name) const = 0;
599
604 virtual InterfaceHandle getTranslator(std::string_view name) const = 0;
605
615 virtual void addDependency(LocalFederateId federateID, std::string_view federateName) = 0;
616
623 virtual void linkEndpoints(std::string_view source, std::string_view dest) = 0;
624
630 virtual void addAlias(std::string_view interfaceKey, std::string_view alias) = 0;
631
634 virtual void makeConnections(const std::string& file) = 0;
635
639 virtual void dataLink(std::string_view source, std::string_view target) = 0;
644 virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view target) = 0;
649 virtual void addDestinationFilterToEndpoint(std::string_view filter,
650 std::string_view target) = 0;
651
664 virtual void send(InterfaceHandle sourceHandle, const void* data, uint64_t length) = 0;
677 virtual void sendTo(InterfaceHandle sourceHandle,
678 const void* data,
679 uint64_t length,
680 std::string_view destination) = 0;
681
697 virtual void
698 sendAt(InterfaceHandle sourceHandle, const void* data, uint64_t length, Time time) = 0;
699
716 virtual void sendToAt(InterfaceHandle sourceHandle,
717 const void* data,
718 uint64_t length,
719 std::string_view destination,
720 Time time) = 0;
721
728 virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr<Message> message) = 0;
729
733 virtual uint64_t receiveCount(InterfaceHandle destination) = 0;
734
739 virtual std::unique_ptr<Message> receive(InterfaceHandle destination) = 0;
740
747 virtual std::unique_ptr<Message> receiveAny(LocalFederateId federateID,
748 InterfaceHandle& endpoint_id) = 0;
749
753 virtual uint64_t receiveCountAny(LocalFederateId federateID) = 0;
754
760 virtual void
761 logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog) = 0;
762
768 std::shared_ptr<FilterOperator> callback) = 0;
769
774 virtual void setTranslatorOperator(InterfaceHandle translator,
775 std::shared_ptr<TranslatorOperator> callback) = 0;
776
782 std::shared_ptr<FederateOperator> callback) = 0;
783
791 virtual void setLoggingCallback(
792 LocalFederateId federateID,
793 std::function<void(int, std::string_view, std::string_view)> logFunction) = 0;
794
796 virtual void setLoggingLevel(int logLevel) = 0;
797
799 virtual void setLogFile(std::string_view lfile) = 0;
800
806 virtual void setGlobal(std::string_view valueName, std::string_view value) = 0;
807
816 virtual void sendCommand(std::string_view target,
817 std::string_view commandStr,
818 std::string_view source,
819 HelicsSequencingModes mode) = 0;
820
823 virtual std::pair<std::string, std::string> getCommand(LocalFederateId federateID) = 0;
824
827 virtual std::pair<std::string, std::string> waitCommand(LocalFederateId federateID) = 0;
828
840 virtual std::string
841 query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode) = 0;
842
855 virtual void setQueryCallback(LocalFederateId federateID,
856 std::function<std::string(std::string_view)> queryFunction,
857 int order) = 0;
858
864 virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info) = 0;
865
871 virtual const std::string& getInterfaceInfo(InterfaceHandle handle) const = 0;
878 virtual void
879 setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value) = 0;
885 virtual const std::string& getInterfaceTag(InterfaceHandle handle,
886 std::string_view tag) const = 0;
887
894 virtual void
895 setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value) = 0;
902 virtual const std::string& getFederateTag(LocalFederateId fid, std::string_view tag) const = 0;
903};
904
905} // namespace helics
constexpr auto NO_ITERATION
simplified alias to indicate that no iterations are needed
Definition CoreTypes.hpp:128
Definition CoreFederateInfo.hpp:16
Definition core/Core.hpp:41
virtual void setFederateTag(LocalFederateId fid, std::string_view tag, std::string_view value)=0
virtual void setLoggingLevel(int logLevel)=0
virtual void setCoreReadyToInit()=0
Core()=default
virtual void addDependency(LocalFederateId federateID, std::string_view federateName)=0
virtual Time timeRequest(LocalFederateId federateID, Time next)=0
virtual const std::string & getInterfaceTag(InterfaceHandle handle, std::string_view tag) const =0
virtual void setHandleOption(InterfaceHandle handle, int32_t option, int32_t option_value)=0
virtual void setLogFile(std::string_view lfile)=0
virtual InterfaceHandle registerTranslator(std::string_view translatorName, std::string_view endpointType, std::string_view units)=0
virtual const std::string & getSourceTargets(InterfaceHandle handle) const =0
virtual void setQueryCallback(LocalFederateId federateID, std::function< std::string(std::string_view)> queryFunction, int order)=0
virtual void setLoggingCallback(LocalFederateId federateID, std::function< void(int, std::string_view, std::string_view)> logFunction)=0
virtual const std::string & getExtractionUnits(InterfaceHandle handle) const =0
virtual void setGlobal(std::string_view valueName, std::string_view value)=0
virtual bool enterInitializingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION)=0
virtual int getErrorCode() const =0
virtual std::pair< std::string, std::string > waitCommand(LocalFederateId federateID)=0
virtual void closeHandle(InterfaceHandle handle)=0
virtual InterfaceHandle getInput(LocalFederateId federateID, std::string_view key) const =0
virtual InterfaceHandle getEndpoint(LocalFederateId federateID, std::string_view name) const =0
virtual InterfaceHandle getFilter(std::string_view name) const =0
virtual void sendAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, Time time)=0
virtual InterfaceHandle getTranslator(std::string_view name) const =0
virtual void setFilterOperator(InterfaceHandle filter, std::shared_ptr< FilterOperator > callback)=0
virtual void removeTarget(InterfaceHandle handle, std::string_view targetToRemove)=0
virtual const std::string & getExtractionType(InterfaceHandle handle) const =0
virtual void addDestinationFilterToEndpoint(std::string_view filter, std::string_view target)=0
virtual const std::vector< InterfaceHandle > & getValueUpdates(LocalFederateId federateID)=0
virtual InterfaceHandle registerCloningFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out)=0
virtual void addSourceTarget(InterfaceHandle handle, std::string_view name, InterfaceType hint=InterfaceType::UNKNOWN)=0
virtual void setFederateOperator(LocalFederateId fed, std::shared_ptr< FederateOperator > callback)=0
virtual void addSourceFilterToEndpoint(std::string_view filter, std::string_view target)=0
virtual LocalFederateId getFederateId(std::string_view name) const =0
virtual void setInterfaceTag(InterfaceHandle handle, std::string_view tag, std::string_view value)=0
virtual void sendMessage(InterfaceHandle sourceHandle, std::unique_ptr< Message > message)=0
virtual const std::string & getInjectionUnits(InterfaceHandle handle) const =0
virtual void setInterfaceInfo(InterfaceHandle handle, std::string_view info)=0
virtual const std::string & getFederateName(LocalFederateId federateID) const =0
virtual uint64_t receiveCount(InterfaceHandle destination)=0
virtual int32_t getHandleOption(InterfaceHandle handle, int32_t option) const =0
virtual const std::string & getIdentifier() const =0
virtual void linkEndpoints(std::string_view source, std::string_view dest)=0
virtual InterfaceHandle registerDataSink(LocalFederateId federateID, std::string_view name)=0
virtual void localError(LocalFederateId federateID, int32_t errorCode, std::string_view errorString)=0
virtual bool isConfigured() const =0
virtual void setTimeProperty(LocalFederateId federateID, int32_t property, Time timeValue)=0
virtual void sendTo(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination)=0
virtual std::string query(std::string_view target, std::string_view queryStr, HelicsSequencingModes mode)=0
virtual const std::string & getHandleName(InterfaceHandle handle) const =0
virtual uint64_t receiveCountAny(LocalFederateId federateID)=0
virtual bool isOpenToNewFederates() const =0
virtual bool getFlagOption(LocalFederateId federateID, int32_t flag) const =0
virtual void addDestinationTarget(InterfaceHandle handle, std::string_view dest, InterfaceType hint=InterfaceType::UNKNOWN)=0
virtual InterfaceHandle registerTargetedEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type)=0
virtual void makeConnections(const std::string &file)=0
virtual void globalError(LocalFederateId federateID, int32_t errorCode, std::string_view errorString)=0
virtual InterfaceHandle getDataSink(LocalFederateId federateID, std::string_view name) const =0
virtual std::unique_ptr< Message > receive(InterfaceHandle destination)=0
virtual void processCommunications(LocalFederateId fedId, std::chrono::milliseconds msToWait)=0
virtual const std::vector< std::shared_ptr< const SmallBuffer > > & getAllValues(InterfaceHandle handle)=0
virtual std::unique_ptr< Message > receiveAny(LocalFederateId federateID, InterfaceHandle &endpoint_id)=0
virtual void send(InterfaceHandle sourceHandle, const void *data, uint64_t length)=0
virtual std::string getErrorMessage() const =0
virtual void configureFromArgs(int argc, char *argv[])=0
virtual void setIntegerProperty(LocalFederateId federateID, int32_t property, int16_t propValue)=0
virtual void sendToAt(InterfaceHandle sourceHandle, const void *data, uint64_t length, std::string_view destination, Time time)=0
virtual LocalFederateId registerFederate(std::string_view name, const CoreFederateInfo &info)=0
virtual const std::string & getAddress() const =0
virtual int32_t getFederationSize()=0
virtual const std::string & getInjectionType(InterfaceHandle handle) const =0
virtual void logMessage(LocalFederateId federateID, int logLevel, std::string_view messageToLog)=0
virtual void sendCommand(std::string_view target, std::string_view commandStr, std::string_view source, HelicsSequencingModes mode)=0
virtual void addAlias(std::string_view interfaceKey, std::string_view alias)=0
virtual const std::string & getFederateTag(LocalFederateId fid, std::string_view tag) const =0
virtual bool waitForDisconnect(std::chrono::milliseconds msToWait=std::chrono::milliseconds(0)) const =0
virtual void setFlagOption(LocalFederateId federateID, int32_t flag, bool flagValue)=0
virtual void finalize(LocalFederateId federateID)=0
virtual iteration_time enterExecutingMode(LocalFederateId federateID, IterationRequest iterate=NO_ITERATION)=0
virtual void configure(std::string_view configureString)=0
virtual bool connect()=0
virtual Time getCurrentTime(LocalFederateId federateID) const =0
virtual InterfaceHandle registerPublication(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units)=0
virtual const std::string & getInterfaceInfo(InterfaceHandle handle) const =0
virtual void setValue(InterfaceHandle handle, const char *data, uint64_t len)=0
virtual const std::shared_ptr< const SmallBuffer > & getValue(InterfaceHandle handle, uint32_t *inputIndex=nullptr)=0
virtual int16_t getIntegerProperty(LocalFederateId federateID, int32_t property) const =0
virtual Time getTimeProperty(LocalFederateId federateID, int32_t property) const =0
virtual InterfaceHandle getPublication(LocalFederateId federateID, std::string_view key) const =0
virtual ~Core()=default
virtual void setTranslatorOperator(InterfaceHandle translator, std::shared_ptr< TranslatorOperator > callback)=0
virtual void disconnect()=0
virtual void dataLink(std::string_view source, std::string_view target)=0
virtual InterfaceHandle registerFilter(std::string_view filterName, std::string_view type_in, std::string_view type_out)=0
virtual std::pair< std::string, std::string > getCommand(LocalFederateId federateID)=0
virtual InterfaceHandle registerEndpoint(LocalFederateId federateID, std::string_view name, std::string_view type)=0
virtual bool isConnected() const =0
virtual const std::string & getDestinationTargets(InterfaceHandle handle) const =0
virtual iteration_time requestTimeIterative(LocalFederateId federateID, Time next, IterationRequest iterate)=0
virtual void configureFromVector(std::vector< std::string > args)=0
virtual InterfaceHandle registerInput(LocalFederateId federateID, std::string_view key, std::string_view type, std::string_view units)=0
Definition LocalFederateId.hpp:65
Definition LocalFederateId.hpp:22
HelicsSequencingModes
Definition helics_enums.h:429
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
IterationRequest
Definition CoreTypes.hpp:103
InterfaceType
Definition CoreTypes.hpp:112
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27
Definition helicsTime.hpp:46