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.h"
21 static int64_t current_serial;
23 void message_destroy(message_t *message)
25 if (message->vtable.destroy)
26 message->vtable.destroy(message);
29 int message_serialize(message_t *message, writer_t *writer)
31 if (message->vtable.serialize)
32 return message->vtable.serialize(message, writer);
36 int message_deserialize(message_t *message, reader_t *reader)
38 if (message->vtable.deserialize)
39 return message->vtable.deserialize(message, reader);
43 void message_set_receiver(message_t *message, const char *ip, int port)
45 if (ip) strncpy(message->receiver_ip, ip, IP_ADDRESS_LEN);
46 message->receiver_port = port;
49 void message_get_receiver(message_t *message, const char **ip, int *port)
51 if (ip) *ip = message->receiver_ip;
52 if (port) *port = message->receiver_port;
55 time_t message_get_timestamp(message_t *message)
57 return message->timestamp;
60 void message_set_timestamp(message_t *message, time_t time)
62 message->timestamp = time;
65 void message_get_sender(message_t *message, const char **ip, int *port)
67 if (ip) *ip = message->sender_ip;
68 if (port) *port = message->sender_port;
71 void message_set_sender(message_t *message, const char *ip, int port)
73 if (ip) strncpy(message->sender_ip, ip, IP_ADDRESS_LEN);
74 message->sender_port = port;
77 message_type_e message_get_type(message_t *message)
82 void message_set_type(message_t *message, message_type_e type)
87 int64_t message_get_serial(message_t *message)
89 return message->serial;
92 void message_base_init(message_t *msg)
94 memset(msg, 0x0, sizeof(message_t));
96 msg->vtable.serialize = message_base_serialize;
97 msg->vtable.deserialize = message_base_deserialize;
98 msg->vtable.destroy = message_base_destroy;
99 msg->serial = current_serial++;
102 void message_base_destroy(message_t *msg)
106 int message_base_deserialize(message_t *msg, reader_t *reader)
110 err |= reader_read_int64(reader, &msg->serial);
111 err |= reader_read_int32(reader, &msg->type);
112 err |= reader_read_int64(reader, &msg->timestamp);
117 int message_base_serialize(message_t *msg, writer_t *writer)
121 err |= writer_write_int64(writer, msg->serial);
122 err |= writer_write_int32(writer, msg->type);
123 err |= writer_write_int64(writer, msg->timestamp);