Skip to content

Commit

Permalink
remove ze_serializer_from_bytes;
Browse files Browse the repository at this point in the history
add ze_serializer_from/to_writer and ze_deserializer_from/to_reader;
  • Loading branch information
DenisBiryukov91 committed Sep 29, 2024
1 parent c22b3ce commit cea6730
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 10 deletions.
5 changes: 4 additions & 1 deletion docs/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,8 @@ Primitives
.. autocfunction:: primitives.h::z_slice_empty
.. autocfunction:: primitives.h::z_slice_is_empty
.. autocfunction:: serialization.h::ze_deserializer_from_bytes
.. autocfunction:: serialization.h::ze_deserializer_from_bytes_reader
.. autocfunction:: serialization.h::ze_deserializer_to_bytes_reader
.. autocfunction:: serialization.h::ze_deserializer_deserialize_int8
.. autocfunction:: serialization.h::ze_deserializer_deserialize_int16
.. autocfunction:: serialization.h::ze_deserializer_deserialize_int32
Expand All @@ -351,7 +353,8 @@ Primitives
.. autocfunction:: serialization.h::ze_deserializer_deserialize_sequence_begin
.. autocfunction:: serialization.h::ze_deserializer_deserialize_sequence_end
.. autocfunction:: serialization.h::ze_serializer_empty
.. autocfunction:: serialization.h::ze_serializer_from_bytes
.. autocfunction:: serialization.h::ze_serializer_from_bytes_writer
.. autocfunction:: serialization.h::ze_serializer_to_byte_writer
.. autocfunction:: serialization.h::ze_serializer_finish
.. autocfunction:: serialization.h::ze_serializer_serialize_int8
.. autocfunction:: serialization.h::ze_serializer_serialize_int16
Expand Down
1 change: 0 additions & 1 deletion include/zenoh-pico.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include "zenoh-pico/api/handlers.h"
#include "zenoh-pico/api/macros.h"
#include "zenoh-pico/api/primitives.h"
#include "zenoh-pico/api/serialization.h"
#include "zenoh-pico/api/types.h"
#include "zenoh-pico/config.h"

Expand Down
46 changes: 42 additions & 4 deletions include/zenoh-pico/api/serialization.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,28 @@ typedef struct _ze_serializer_t {
_Z_OWNED_TYPE_VALUE_PREFIX(ze, _ze_serializer_t, serializer)

/**
* Constructs serializer.
* Constructs serializer from a `bytes_writer`.
*
* Parameters:
* serializer: An uninitialized memory location where serializer is to be constructed.
* bytes: Data container to initiate serializer with.
* writer: A writer to initialize serializer with.
*
* Return:
* ``0`` in case of success, ``negative value`` otherwise.
*/
z_result_t ze_serializer_from_bytes(ze_owned_serializer_t *serializer, z_moved_bytes_t *bytes);
z_result_t ze_serializer_from_bytes_writer(ze_owned_serializer_t *serializer, z_moved_bytes_writer_t *writer);

/**
* Converts serializer into 'z_owned_bytes_writer_t'. This corresponds to initializing writer with serializer data.
*
* Parameters:
* serializer: A serializer instance.
* writer: An uninitialized memory location where 'z_owned_bytes_writer_t' is to be constructed.
*
* Return:
* ``0`` in case of success, ``negative value`` otherwise.
*/
z_result_t ze_serializer_to_bytes_writer(ze_moved_serializer_t *serializer, z_owned_bytes_writer_t *writer);

/**
* Constructs an empty serializer.
Expand Down Expand Up @@ -81,10 +93,36 @@ void ze_serializer_finish(ze_moved_serializer_t *serializer, z_owned_bytes_t *by
* bytes: Data to deserialize.
*
* Return:
* The constructed :c:type:`z_bytes_reader_t`.
* The constructed :c:type:`ze_deserializer_t`.
*/
ze_deserializer_t ze_deserializer_from_bytes(const z_loaned_bytes_t *bytes);

/**
* Constructs deserializer from a `z_bytes_reader_t`.. The state of deserializer (i.e. underlying data and read
* position) will be initiated with the reader's state.
*
*
* Parameters:
* reader: A reader to initialize deserializer with.
*
* Return:
* The constructed :c:type:`ze_bytes_deserializer_t`.
*/
ze_deserializer_t ze_deserializer_from_bytes_reader(const z_bytes_reader_t *reader);

/**
* Converts deserializer into a `z_bytes_reader_t`. The state of reader (i.e. underlying data and read position) will be
* initiated with the serializer's state.
*
*
* Parameters:
* deserializer: A deserializer to initialize reader with.
*
* Return:
* The constructed :c:type:`z_bytes_reader_t`.
*/
z_bytes_reader_t ze_deserializer_to_bytes_reader(const ze_deserializer_t *deserializer);

/**
* Writes a serialized :c:type:`uint8_t` into underlying :c:type:`z_owned_bytes_t`.
*
Expand Down
1 change: 1 addition & 0 deletions include/zenoh-pico/collections/bytes.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,5 +91,6 @@ z_result_t _z_bytes_writer_append_z_bytes(_z_bytes_writer_t *writer, _z_bytes_t
z_result_t _z_bytes_writer_append_slice(_z_bytes_writer_t *writer, _z_arc_slice_t *bytes);
_z_bytes_t _z_bytes_writer_finish(_z_bytes_writer_t *writer);
void _z_bytes_writer_clear(_z_bytes_writer_t *writer);
void _z_bytes_writer_move(_z_bytes_writer_t *dst, _z_bytes_writer_t *src);

#endif /* ZENOH_PICO_COLLECTIONS_BYTES_H */
2 changes: 1 addition & 1 deletion include/zenoh-pico/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#define Z_BATCH_MULTICAST_SIZE 2048
#define Z_CONFIG_SOCKET_TIMEOUT 100

/* #undef Z_FEATURE_UNSTABLE_API */
#define Z_FEATURE_UNSTABLE_API
#define Z_FEATURE_MULTI_THREAD 1
#define Z_FEATURE_PUBLICATION 1
#define Z_FEATURE_SUBSCRIPTION 1
Expand Down
19 changes: 17 additions & 2 deletions src/api/serialization.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,13 @@ void _ze_serializer_clear(_ze_serializer_t *serializer) { _z_bytes_writer_clear(
_Z_OWNED_FUNCTIONS_VALUE_NO_COPY_IMPL_PREFIX(ze, _ze_serializer_t, serializer, _ze_serializer_check,
_ze_serializer_empty, _ze_serializer_clear)

z_result_t ze_serializer_from_bytes(ze_owned_serializer_t *serializer, z_moved_bytes_t *bytes) {
serializer->_val._writer = _z_bytes_writer_from_bytes(&bytes->_this._val);
z_result_t ze_serializer_from_bytes_writer(ze_owned_serializer_t *serializer, z_moved_bytes_writer_t *writer) {
_z_bytes_writer_move(&serializer->_val._writer, &writer->_this._val);
return _Z_RES_OK;
}

z_result_t ze_serializer_to_writer(ze_moved_serializer_t *serializer, z_owned_bytes_writer_t *writer) {
_z_bytes_writer_move(&writer->_val, &serializer->_this._val._writer);
return _Z_RES_OK;
}

Expand All @@ -50,6 +55,16 @@ ze_deserializer_t ze_deserializer_from_bytes(const z_loaned_bytes_t *bytes) {
return d;
}

ze_deserializer_t ze_deserializer_from_bytes_reader(const z_bytes_reader_t *reader) {
ze_deserializer_t d;
d._reader = *reader;
return d;
}

z_bytes_reader_t ze_deserializer_to_bytes_reader(const ze_deserializer_t *deserializer) {
return deserializer->_reader;
}

z_result_t __read_single_byte(uint8_t *b, void *context) {
z_bytes_reader_t *reader = (z_bytes_reader_t *)context;
return _z_bytes_reader_read(reader, b, 1) == 1 ? _Z_RES_OK : _Z_ERR_DID_NOT_READ;
Expand Down
6 changes: 6 additions & 0 deletions src/collections/bytes.c
Original file line number Diff line number Diff line change
Expand Up @@ -410,3 +410,9 @@ void _z_bytes_writer_clear(_z_bytes_writer_t *writer) {
_z_bytes_drop(&writer->bytes);
writer->cache = NULL;
}

void _z_bytes_writer_move(_z_bytes_writer_t *dst, _z_bytes_writer_t *src) {
dst->cache = src->cache;
_z_bytes_move(&dst->bytes, &src->bytes);
src->cache = NULL;
}
2 changes: 1 addition & 1 deletion zenohpico.pc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ prefix=/usr/local
Name: zenohpico
Description:
URL:
Version: 1.0.20240925dev
Version: 1.0.20240929dev
Cflags: -I${prefix}/include
Libs: -L${prefix}/lib -lzenohpico

0 comments on commit cea6730

Please sign in to comment.