1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 2016-2017 (c) Fraunhofer IOSB (Author: Julius Pfrommer)
- * Copyright 2016-2017 (c) Stefan Profanter, fortiss GmbH
- * Copyright 2017 (c) Florian Palm
- * Copyright 2017 (c) Mark Giraud, Fraunhofer IOSB
- */
- #ifndef UA_CONNECTION_INTERNAL_H_
- #define UA_CONNECTION_INTERNAL_H_
- #include <open62541/plugin/network.h>
- #include <open62541/transport_generated.h>
- _UA_BEGIN_DECLS
- /* Process the remote configuration in the HEL/ACK handshake. The connection
- * config is initialized with the local settings. */
- UA_StatusCode
- UA_Connection_processHELACK(UA_Connection *connection,
- const UA_ConnectionConfig *localConfig,
- const UA_ConnectionConfig *remoteConfig);
- /* The application can be the client or the server */
- typedef UA_StatusCode (*UA_Connection_processChunk)(void *application,
- UA_Connection *connection,
- UA_ByteString *chunk);
- /* The network layer may receive several chunks in one packet since TCP is a
- * streaming protocol. The last chunk in the packet may be only partial. This
- * method calls the processChunk callback on all full chunks that were received.
- * The last incomplete chunk is buffered in the connection for the next
- * iteration.
- *
- * The packet itself is not edited in this method. But possibly in the callback
- * that is executed on complete chunks.
- *
- * @param connection The connection
- * @param application The client or server application
- * @param processCallback The function pointer for processing each chunk
- * @param packet The received packet.
- * @return Returns UA_STATUSCODE_GOOD or an error code. When an error occurs,
- * the current buffer in the connection are
- * freed. */
- UA_StatusCode
- UA_Connection_processChunks(UA_Connection *connection, void *application,
- UA_Connection_processChunk processCallback,
- const UA_ByteString *packet);
- /* Try to receive at least one complete chunk on the connection. This blocks the
- * current thread up to the given timeout.
- *
- * @param connection The connection
- * @param application The client or server application
- * @param processCallback The function pointer for processing each chunk
- * @param timeout The timeout (in milliseconds) the method will block at most.
- * @return Returns UA_STATUSCODE_GOOD or an error code. When an timeout occurs,
- * UA_STATUSCODE_GOODNONCRITICALTIMEOUT is returned. */
- UA_StatusCode
- UA_Connection_receiveChunksBlocking(UA_Connection *connection, void *application,
- UA_Connection_processChunk processCallback,
- UA_UInt32 timeout);
- UA_StatusCode
- UA_Connection_receiveChunksNonBlocking(UA_Connection *connection, void *application,
- UA_Connection_processChunk processCallback);
- /* When a fatal error occurs the Server shall send an Error Message to the
- * Client and close the socket. When a Client encounters one of these errors, it
- * shall also close the socket but does not send an Error Message. After the
- * socket is closed a Client shall try to reconnect automatically using the
- * mechanisms described in [...]. */
- void
- UA_Connection_sendError(UA_Connection *connection,
- UA_TcpErrorMessage *error);
- void UA_Connection_detachSecureChannel(UA_Connection *connection);
- void UA_Connection_attachSecureChannel(UA_Connection *connection,
- UA_SecureChannel *channel);
- _UA_END_DECLS
- #endif /* UA_CONNECTION_INTERNAL_H_ */
|