Tizen 2.0 Release
[platform/core/messaging/email-service.git] / email-core / include / email-core-tasks.h
1 /*\r
2 *  email-service\r
3 *\r
4 * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
5 *\r
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>\r
7 *\r
8 * Licensed under the Apache License, Version 2.0 (the "License");\r
9 * you may not use this file except in compliance with the License.\r
10 * You may obtain a copy of the License at\r
11 *\r
12 * http://www.apache.org/licenses/LICENSE-2.0\r
13 *\r
14 * Unless required by applicable law or agreed to in writing, software\r
15 * distributed under the License is distributed on an "AS IS" BASIS,\r
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17 * See the License for the specific language governing permissions and\r
18 * limitations under the License.\r
19 *\r
20 */\r
21 /*\r
22  * email-core-tasks.h\r
23  *\r
24  *  Created on: 2012. 11. 5.\r
25  *      Author: kyuho.jo@samsung.com\r
26  */\r
27 \r
28 #ifndef EMAIL_CORE_TASKS_H_\r
29 #define EMAIL_CORE_TASKS_H_\r
30 \r
31 #include "email-internal-types.h"\r
32 \r
33 typedef struct\r
34 {\r
35         email_task_type_t          task_type;\r
36         void*                    (*task_handler_function)(void*);\r
37         int                      (*task_parameter_encoder)(void*, char**, int*);\r
38         int                      (*task_parameter_decoder)(char*, int, void**);\r
39 } email_task_handler_t;\r
40 \r
41 typedef struct\r
42 {\r
43         int                       task_id;\r
44         email_task_type_t         task_type;\r
45         email_task_status_type_t  task_status;\r
46         email_task_priority_t     task_priority;\r
47         int                       task_parameter_length;\r
48         char                     *task_parameter;\r
49 \r
50         /* Not be stored in DB*/\r
51         thread_t                  thread_id;\r
52         int                       active_task_id;\r
53 } email_task_t;\r
54 \r
55 #define DECLARE_CONVERTER_FOR_TASK_PARAMETER(TASK_NAME) INTERNAL_FUNC int email_encode_task_parameter_##TASK_NAME(void *input_task_parameter_struct, char **output_byte_stream, int *output_stream_size); \\r
56                 INTERNAL_FUNC int email_decode_task_parameter_##TASK_NAME(char *input_byte_stream, int input_stream_size, void **output_task_parameter_struct);\r
57 \r
58 /*-------------------------------------------------------------------------------------------*/\r
59 /* to handle _EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT */\r
60 typedef struct\r
61 {\r
62         int  source_mailbox_id;\r
63         int  target_mailbox_id;\r
64         int  mail_id_count;\r
65         int *mail_id_array;\r
66 } task_parameter_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT;\r
67 \r
68 DECLARE_CONVERTER_FOR_TASK_PARAMETER(EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT);\r
69 INTERNAL_FUNC void* task_handler_EMAIL_ASYNC_TASK_MOVE_MAILS_TO_MAILBOX_OF_ANOTHER_ACCOUNT(void *param);\r
70 \r
71 /*-------------------------------------------------------------------------------------------*/\r
72 /* to handle EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX */\r
73 typedef struct\r
74 {\r
75         int  account_id;\r
76         int  mailbox_id_count;\r
77         int *mailbox_id_array;\r
78         int  on_server;\r
79 } task_parameter_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX;\r
80 \r
81 DECLARE_CONVERTER_FOR_TASK_PARAMETER(EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX);\r
82 INTERNAL_FUNC void* task_handler_EMAIL_ASYNC_TASK_DELETE_MAILBOX_EX(void *input_param);\r
83 /*-------------------------------------------------------------------------------------------*/\r
84 /* to handle EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL */\r
85 typedef struct\r
86 {\r
87         int  mail_id;\r
88 } task_parameter_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL;\r
89 \r
90 DECLARE_CONVERTER_FOR_TASK_PARAMETER(EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL);\r
91 INTERNAL_FUNC void* task_handler_EMAIL_ASYNC_TASK_SEND_MAIL_WITH_DOWNLOADING_ATTACHMENT_OF_ORIGINAL_MAIL(void *input_param);\r
92 /*-------------------------------------------------------------------------------------------*/\r
93 #endif /* EMAIL_CORE_TASKS_H_ */\r