19class AccessControlBase;
23template <
typename Connection>
28struct ValueBackendDataSource;
32struct ServerConnection;
75#ifdef UA_ENABLE_ENCRYPTION
151#ifdef UA_ENABLE_SUBSCRIPTIONS
156#ifdef UA_ENABLE_SUBSCRIPTIONS_EVENTS
183 std::unique_ptr<detail::ServerConnection> connection_;
187 return (lhs.handle() == rhs.handle());
191 return !(lhs == rhs);
Access control base class.
UA_ByteString wrapper class.
UA_DataType wrapper class.
Create and trigger events.
High-level node class to access node attribute, browse and populate address space.
void setVariableNodeValueBackend(const NodeId &id, ValueBackendDataSource backend)
Set data source backend for variable node.
std::vector< Session > getSessions()
Get active server session.
Node< Server > getNode(NodeId id)
Node< Server > getObjectsNode()
void setApplicationName(std::string_view name)
Set application name, default: open62541-based OPC UA Application.
void setProductUri(std::string_view uri)
Set product URI, default: http://open62541.org.
NamespaceIndex registerNamespace(std::string_view uri)
Register namespace. The new namespace index will be returned.
void setCustomHostname(std::string_view hostname)
Set custom hostname, default: system's host name.
void stop()
Stop the server's main loop.
void setCustomDataTypes(std::vector< DataType > dataTypes)
Set custom data types.
Server(uint16_t port, const ByteString &certificate, const ByteString &privateKey, Span< const ByteString > trustList, Span< const ByteString > issuerList, Span< const ByteString > revocationList={})
Create server with encryption enabled (PKI).
Server(Server &&) noexcept=default
void run()
Run the server's main loop. This method will block until Server::stop is called.
uint16_t runIterate()
Run a single iteration of the server's main loop.
Node< Server > getRootNode()
Subscription< Server > createSubscription() noexcept
Create a (pseudo) subscription to monitor local data changes and events.
Node< Server > getViewsNode()
Server(uint16_t port=4840, ByteString certificate={}, Logger logger=nullptr)
Create server with default configuration (no encryption).
void setAccessControl(AccessControlBase &accessControl)
Set custom access control.
Event createEvent(const NodeId &eventType=ObjectTypeId::BaseEventType)
Create an event object to generate and trigger events.
Node< Server > getTypesNode()
void setApplicationUri(std::string_view uri)
Set application URI, default: urn:open62541.server.application.
void setVariableNodeValueCallback(const NodeId &id, ValueCallback callback)
Set value callbacks to execute before every read and after every write operation.
friend detail::ServerConnection & detail::getConnection(Server &server) noexcept
bool isRunning() const noexcept
Check if the server is running.
Server(const Server &)=delete
std::vector< std::string > getNamespaceArray()
Get all defined namespaces.
UA_Server * handle() noexcept
void setLogger(Logger logger)
Set custom logging function.
High-level session class to manage client sessions.
View to a contiguous sequence of objects, similar to std::span in C++20.
High-level subscription class.
ClientContext * getContext(UA_Client *client) noexcept
UA_ClientConfig * getConfig(UA_Client *client) noexcept
Client * getWrapper(UA_Client *client) noexcept
ClientConnection * getConnection(UA_Client *client) noexcept
std::function< void(LogLevel, LogCategory, std::string_view msg)> Logger
Log function signature.
uint16_t NamespaceIndex
Namespace index.
bool operator!=(const Client &lhs, const Client &rhs) noexcept
@ DataType
The NodeId of the data type definition for the Value attribute.
Data source backend for variable nodes.
Value callbacks for variable nodes.
Internal storage for Server class.