Ported user name message 36/190936/2
authorKrzysztof Wieclaw <k.wieclaw@samsung.com>
Tue, 9 Oct 2018 12:32:11 +0000 (14:32 +0200)
committerKrzysztof Wieclaw <k.wieclaw@samsung.com>
Tue, 23 Oct 2018 11:36:31 +0000 (13:36 +0200)
Change-Id: I5dd7462bcb6ca9f6dab2fd6b314903520f7c23d3
Signed-off-by: Krzysztof Wieclaw <k.wieclaw@samsung.com>
CMakeLists.txt
inc/messages/message.h
inc/messages/message_config_user_name.h [new file with mode: 0644]
src/messages/message_config_user_name.c [new file with mode: 0644]
src/messages/message_factory.c

index dd6c623..b8d3eb1 100644 (file)
@@ -32,6 +32,7 @@ SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
 INCLUDE_DIRECTORIES(${PROJECT_ROOT_DIR}/inc)
 
 ADD_EXECUTABLE(${PROJECT_NAME}
+       ${PROJECT_ROOT_DIR}/src/messages/message_config_user_name.c
        ${PROJECT_ROOT_DIR}/src/messages/clock.c
        ${PROJECT_ROOT_DIR}/src/messages/message_command.c
        ${PROJECT_ROOT_DIR}/src/messages/message_factory.c
index d4a2d96..2cf653e 100644 (file)
@@ -31,7 +31,8 @@ typedef enum message_type {
        MESSAGE_KEEP_ALIVE,       /** Keep alive request */
        MESSAGE_ACK,              /** Message delivery confirmation */
        MESSAGE_COMMAND,          /** Message with command data */
-       MESSAGE_BYE               /** Connection end request */
+       MESSAGE_BYE,              /** Connection end request */
+       MESSAGE_CONFIG_USER_NAME  /** User name to be set */
 } message_type_e;
 
 #define IP_ADDRESS_LEN 15
diff --git a/inc/messages/message_config_user_name.h b/inc/messages/message_config_user_name.h
new file mode 100644 (file)
index 0000000..d8ddd93
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MESSAGE_CONFIG_USER_NAME_H
+#define MESSAGE_CONFIG_USER_NAME_H
+
+#include "messages/message.h"
+
+/**
+ * @brief Config user name message data
+ */
+typedef struct message_config_user_name {
+       message_t base;        /** Base class */
+       char *user_name; /** User name */
+} message_config_user_name_t;
+
+/**
+ * @brief Initializes message_config_user_name_t object.
+ *
+ * @param[in] message config user name message.
+ */
+void message_config_user_name_init(message_config_user_name_t *message);
+
+/**
+ * @brief Get name from mesage.
+ *
+ * @param[in] message config user name message.
+ *
+ * @return Const pointer to name.
+ */
+const char *message_config_user_name_get_name(message_config_user_name_t *message);
+
+/**
+ * @brief Set name for message.
+ *
+ * @param[in] message config user name message.
+ * @param[in] name name to be set.
+ */
+void message_config_user_name_set_name(message_config_user_name_t *message, const char *name);
+
+/**
+ * @brief Destroys message_config_user_name_t object.
+ *
+ * @param[in] message message.
+ */
+void message_config_user_name_destroy(message_config_user_name_t *message);
+
+/**
+ * @brief Deserializes message_config_user_name_t from reader's buffer.
+ *
+ * @param[in] message config user name message.
+ * @param[in] reader reader object.
+ *
+ * @return 0 on success, other value on failure.
+ */
+int message_config_user_name_deserialize(message_config_user_name_t *message, reader_t *reader);
+
+/**
+ * @brief Serializes message_config_user_name_t into writer's buffer.
+ *
+ * @param[in] message config user name message.
+ * @param[in] writer writer object.
+ *
+ * @return 0 on success, other value on failure.
+ */
+int message_config_user_name_serialize(message_config_user_name_t *message, writer_t *writer);
+
+#endif /* end of include guard: MESSAGE_CONFIG_USER_NAME_H */
diff --git a/src/messages/message_config_user_name.c b/src/messages/message_config_user_name.c
new file mode 100644 (file)
index 0000000..49b2728
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MESSAGE_CONFIG_USER_NAME_C
+#define MESSAGE_CONFIG_USER_NAME_C
+
+#include "messages/message_config_user_name.h"
+
+#include <string.h>
+#include "messages/macros.h"
+
+static int _message_config_user_name_serialze_vcall(message_t *msg, writer_t *writer)
+{
+       message_config_user_name_t *command_msg = container_of(msg, message_config_user_name_t, base);
+       return message_config_user_name_serialize(command_msg, writer);
+}
+
+static int _message_config_user_name_deserialize_vcall(message_t *msg, reader_t *reader)
+{
+       message_config_user_name_t *command_msg = container_of(msg, message_config_user_name_t, base);
+       return message_config_user_name_deserialize(command_msg, reader);
+}
+
+static void _message_config_user_name_destroy_vcall(message_t *msg)
+{
+       message_config_user_name_t *command_msg = container_of(msg, message_config_user_name_t, base);
+       message_config_user_name_destroy(command_msg);
+}
+
+void message_config_user_name_init(message_config_user_name_t *message)
+{
+       message_base_init(&message->base);
+
+       message_set_type(&message->base, MESSAGE_CONFIG_USER_NAME);
+
+       message->base.vtable.serialize = _message_config_user_name_serialze_vcall;
+       message->base.vtable.deserialize = _message_config_user_name_deserialize_vcall;
+       message->base.vtable.destroy = _message_config_user_name_destroy_vcall;
+
+       message->user_name = NULL;
+}
+
+void message_config_user_name_destroy(message_config_user_name_t *message)
+{
+       free((void*)message->user_name);
+       message->user_name = NULL;
+       message_base_destroy(&message->base);
+}
+
+int message_config_user_name_deserialize(message_config_user_name_t *message, reader_t *reader)
+{
+       int err = 0;
+
+       err |= message_base_deserialize(&message->base, reader);
+       err |= reader_read_string(reader, &message->user_name);
+
+       return err;
+}
+
+int message_config_user_name_serialize(message_config_user_name_t *message, writer_t *writer)
+{
+       int err = 0;
+
+       err |= message_base_serialize(&message->base, writer);
+       err |= writer_write_string(writer, message->user_name);
+
+       return err;
+}
+
+const char *message_config_user_name_get_name(message_config_user_name_t *message)
+{
+       return message->user_name;
+}
+
+void message_config_user_name_set_name(message_config_user_name_t *message, const char *name)
+{
+       free((void*)message->user_name);
+       message->user_name = strdup(name);
+}
+
+#endif /* end of include guard: MESSAGE_CONFIG_USER_NAME_C */
index 03ec278..0ca2638 100644 (file)
@@ -25,6 +25,7 @@
 #include "messages/message_connect_accepted.h"
 #include "messages/message_connect_refused.h"
 #include "messages/message_keep_alive.h"
+#include "messages/message_config_user_name.h"
 
 struct _message_factory {
        union {
@@ -35,6 +36,7 @@ struct _message_factory {
                message_connect_accepted_t connect_accepted;
                message_connect_refused_t connect_refused;
                message_keep_alive_t keep_alive;
+               message_config_user_name_t config_user_name;
        } messages;
 };
 
@@ -62,6 +64,9 @@ message_t *message_factory_create_message(message_factory_t *factory, message_ty
        case MESSAGE_BYE:
                message_bye_init(&factory->messages.bye);
                return &factory->messages.bye.base;
+       case MESSAGE_CONFIG_USER_NAME:
+               message_config_user_name_init(&factory->messages.config_user_name);
+               return &factory->messages.config_user_name.base;
        default:
                return NULL;
        }