upload tizen1.0 source
[framework/system/sync-agent.git] / framework / include / EngineController / engine_controller_message.h
1 /*
2  * sync-agent-framework
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: JuHak Park <juhaki.park@samsung.com>,
7  *          JuneHyuk Lee <junhyuk7.lee@samsung.com>,
8  *          SunBong Ha <sunbong.ha@samsung.com>
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */
23
24
25
26
27 /*
28  * For any sort of issue you concern as to this software,
29  * you may use following point of contact.
30  * All resources contributed on this software
31  * are orinigally written by S-Core Inc., a member of Samsung Group.
32  *
33  * Wook Choi <wook.choi@samsung.com>
34  */
35
36 #ifndef ENGINE_CONTROLLER_MESSAGE_H_
37 #define ENGINE_CONTROLLER_MESSAGE_H_
38
39 #include <limits.h>
40
41 #include "engine_controller_define.h"
42 #include "engine_controller.h"
43 #include "param_value.h"
44 #include "param_spec.h"
45 #include "task_spec.h"
46
47 typedef enum engine_controller_msg_type_e {
48         ENGINE_CONTROLLER_UNKNOWN_MSG_TYPE = 0,
49         ENGINE_CONTROLLER_REGISTER_MSG_TYPE,
50         ENGINE_CONTROLLER_UNREGISTER_MSG_TYPE,
51         ENGINE_CONTROLLER_REGISTER_QUEUING_RULE_SPEC_MSG_TYPE,
52         ENGINE_CONTROLLER_REQUEST_MSG_TYPE,
53         ENGINE_CONTROLLER_CANCEL_MSG_TYPE,
54         ENGINE_CONTROLLER_CANCEL_ALL_MSG_TYPE,
55 } engine_controller_msg_type_t;
56
57 typedef struct engine_controller_msg_head_s engine_controller_msg_head_t;
58 struct engine_controller_msg_head_s {
59         engine_controller_msg_type_t msg_type;
60         ec_int msg_id;
61 };
62
63 typedef struct engine_controller_request_msg_s engine_controller_request_msg_t;
64 struct engine_controller_request_msg_s {
65         engine_controller_msg_head_t msg_head;
66
67         ec_uint task_spec_id;
68
69         /* input data */
70         ec_uint identifier;
71         ec_int cnt_in_param;
72         ec_int *in_param_index_array;
73         param_value_t *in_param_value_array;
74
75         /* aynchronous finish callback */
76         task_finish_callback_func task_finish_callback;
77         ec_pointer simple_task_finish_callback_usr_data;
78 };
79
80 typedef struct engine_controller_cancel_all_msg_s engine_controller_cancel_all_msg_t;
81 struct engine_controller_cancel_all_msg_s {
82         engine_controller_msg_head_t msg_head;
83 };
84
85 typedef struct engine_controller_cancel_msg_s engine_controller_cancel_msg_t;
86 struct engine_controller_cancel_msg_s {
87         engine_controller_msg_head_t msg_head;
88
89         ec_uint request_msg_id_to_cancel;
90 };
91
92 typedef struct engine_controller_register_msg_s engine_controller_register_msg_t;
93 struct engine_controller_register_msg_s {
94         engine_controller_msg_head_t msg_head;
95
96         ec_uint task_spec_id;
97         task_spec_t *pTask_spec;
98         calculate_identifier_func id_calc_func;
99 };
100
101 typedef struct engine_controller_register_queuing_rule_spec_msg_s engine_controller_register_queuing_rule_spec_msg_t;
102 struct engine_controller_register_queuing_rule_spec_msg_s {
103         engine_controller_msg_head_t msg_head;
104
105         queuing_rule_spec_t *pSpec;
106
107         /* aynchronous finish callback */
108         register_finish_callback_func register_finish_callback;
109         ec_pointer usr_data;
110 };
111
112 void engine_controller_msg_set_msg_head(engine_controller_msg_head_t *pMsg_head, engine_controller_msg_type_t msg_type, ec_uint msg_id);
113
114 engine_controller_register_msg_t *engine_controller_msg_create_register_msg(ec_uint task_spec_id, task_spec_t *pTask_spec, calculate_identifier_func id_calc_func);
115
116 void engine_controller_msg_free_register_msg(engine_controller_register_msg_t *pRegister_msg);
117
118 engine_controller_register_queuing_rule_spec_msg_t *engine_controller_msg_create_register_queuing_rule_spec_msg(queuing_rule_spec_t *pSpec, register_finish_callback_func register_finish_callback, ec_pointer usr_data);
119
120 void engine_controller_msg_free_register_queuing_rule_spec_msg(engine_controller_register_queuing_rule_spec_msg_t *pMsg);
121
122 /* TODO : unregister msg */
123
124 engine_controller_request_msg_t *engine_controller_msg_create_request_msg(ec_uint task_spec_id, ec_uint identifier, ec_int cnt_in_param, ec_int *in_param_index_array, ECValueType * in_param_value_type_array, ec_pointer * in_param_value_array, task_finish_callback_func task_finish_callback, ec_pointer simple_task_finish_callback_usr_data);
125
126 void engine_controller_msg_free_request_msg(engine_controller_request_msg_t *pMsg);
127
128 engine_controller_cancel_all_msg_t *engine_controller_msg_create_cancel_all_msg();
129 void engine_controller_msg_free_cancel_all_msg(engine_controller_cancel_all_msg_t *pCancel_all_msg);
130
131 engine_controller_cancel_msg_t *engine_controller_msg_create_cancel_msg(ec_uint request_msg_id_to_cancel);
132 void engine_controller_msg_free_cancel_msg(engine_controller_cancel_msg_t *pCancel_msg);
133
134 ec_boolean engine_controller_msg_check_same_msg_type(engine_controller_msg_head_t *pHead, engine_controller_msg_type_t msg_type);
135 ec_boolean engine_controller_msg_is_register_msg(engine_controller_msg_head_t *pHead);
136 ec_boolean engine_controller_msg_is_unregister_msg(engine_controller_msg_head_t *pHead);
137 ec_boolean engine_controller_msg_is_register_queuing_rule_spec_msg(engine_controller_msg_head_t *pHead);
138 ec_boolean engine_controller_msg_is_request_msg(engine_controller_msg_head_t *pHead);
139 ec_boolean engine_controller_msg_is_cancel_msg(engine_controller_msg_head_t *pHead);
140 ec_boolean engine_controller_msg_is_cancel_all_msg(engine_controller_msg_head_t *pHead);
141
142 #endif /* ENGINE_CONTROLLER_MESSAGE_H_ */