2 * Copyright (c) 2018 Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.1 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "messages/message_ack.h"
18 #include "messages/macros.h"
20 static int _message_ack_serialze_vcall(message_t *msg, writer_t *writer)
22 message_ack_t *ack_msg = container_of(msg, message_ack_t, base);
23 return message_ack_serialize(ack_msg, writer);
26 static int _message_ack_deserialize_vcall(message_t *msg, reader_t *reader)
28 message_ack_t *ack_msg = container_of(msg, message_ack_t, base);
29 return message_ack_deserialize(ack_msg, reader);
32 static void _message_ack_destroy_vcall(message_t *msg)
34 message_ack_t *ack_msg = container_of(msg, message_ack_t, base);
35 message_ack_destroy(ack_msg);
38 void message_ack_init(message_ack_t *message)
40 message_base_init(&message->base);
42 message_set_type(&message->base, MESSAGE_ACK);
44 message->base.vtable.serialize = _message_ack_serialze_vcall;
45 message->base.vtable.deserialize = _message_ack_deserialize_vcall;
46 message->base.vtable.destroy = _message_ack_destroy_vcall;
48 message->ack_serial = -1; // ack_serial not set
51 void message_ack_init_from_request(message_ack_t *message, message_t *request)
53 message_ack_init(message);
55 message->ack_serial = message_get_serial(request);
58 void message_ack_destroy(message_ack_t *message)
60 message_base_destroy(&message->base);
63 int64_t message_ack_get_ack_serial(message_ack_t *message)
65 return message->ack_serial;
68 int message_ack_deserialize(message_ack_t *message, reader_t *reader)
72 err |= message_base_deserialize(&message->base, reader);
73 err |= reader_read_int64(reader, &message->ack_serial);
78 int message_ack_serialize(message_ack_t *message, writer_t *writer)
82 err |= message_base_serialize(&message->base, writer);
83 err |= writer_write_int64(writer, message->ack_serial);