12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /* 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/. */
- #ifndef UA_CONNECTION_INTERNAL_H_
- #define UA_CONNECTION_INTERNAL_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "ua_plugin_network.h"
- /* The network layer may receive chopped up messages since TCP is a streaming
- * protocol. Furthermore, the networklayer may operate on ringbuffers or
- * statically assigned memory.
- *
- * If an entire chunk is received, it is forwarded directly. But the memory
- * needs to be freed with the networklayer-specific mechanism. If a half message
- * is received, we copy it into a local buffer. Then, the stack-specific free
- * needs to be used.
- *
- * @param connection The connection
- * @param message The received packet. The content may be replaced when a chunk
- * is completed with previously received packets.
- * @param realloced The Boolean value is set to true if the outgoing message has
- * been reallocated from the network layer.
- * @return Returns UA_STATUSCODE_GOOD or an error code. When an error occurs,
- * the ingoing message and the current buffer in the connection are
- * freed. */
- UA_StatusCode
- UA_Connection_completeChunks(UA_Connection *connection,
- UA_ByteString * UA_RESTRICT message,
- UA_Boolean * UA_RESTRICT realloced);
- /* 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 chunk The received chunk. The memory is allocated either by the
- * networklayer or internally.
- * @param realloced The Boolean value is set to true if the chunk has been
- * reallocated from the network layer.
- * @param timeout The timeout (in milliseconds) the method will block at most.
- * @return Returns UA_STATUSCODE_GOOD or an error code. When an error occurs,
- * the chunk buffer is returned empty. Upon a timeout,
- * UA_STATUSCODE_GOODNONCRITICALTIMEOUT is returned.
- */
- UA_StatusCode
- UA_Connection_receiveChunksBlocking(UA_Connection *connection,
- UA_ByteString *chunks,
- UA_Boolean *realloced,
- UA_UInt32 timeout);
- void UA_Connection_detachSecureChannel(UA_Connection *connection);
- void UA_Connection_attachSecureChannel(UA_Connection *connection,
- UA_SecureChannel *channel);
- #ifdef __cplusplus
- } // extern "C"
- #endif
- #endif /* UA_CONNECTION_INTERNAL_H_ */
|