d47e125a511400f78a5d2f99c047901e1614a9b9
[framework/telephony/libtcore.git] / include / user_request.h
1 /*
2  * libtcore
3  *
4  * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Ja-young Gu <jygu@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20
21 #ifndef __TCORE_USER_REQUEST_H__
22 #define __TCORE_USER_REQUEST_H__
23
24 __BEGIN_DECLS
25
26 struct tcore_user_info {
27         uid_t uid;
28         gid_t gid;
29         pid_t pid;
30
31         char *appname;
32         unsigned int channel_id;
33         unsigned int client_cmd;
34
35         void *user_data;
36 };
37
38 typedef void (*UserRequestFreeHook)(UserRequest *ur);
39 typedef void (*UserRequestResponseHook)(UserRequest *ur,
40                 enum tcore_response_command command,
41                 unsigned int data_len, const void *data, void *user_data);
42
43 UserRequest*  tcore_user_request_new(Communicator *comm, const char *modem_name);
44 void          tcore_user_request_free(UserRequest *ur);
45
46 UserRequest*  tcore_user_request_ref(UserRequest *ur);
47 void          tcore_user_request_unref(UserRequest *ur);
48
49 TReturn       tcore_user_request_set_free_hook(UserRequest *ur,
50                   UserRequestFreeHook free_hook);
51 TReturn       tcore_user_request_set_response_hook(UserRequest *ur,
52                   UserRequestResponseHook resp_hook, void *user_data);
53
54 Communicator* tcore_user_request_ref_communicator(UserRequest *ur);
55 char*         tcore_user_request_get_modem_name(UserRequest *ur);
56
57 TReturn       tcore_user_request_set_user_info(UserRequest *ur,
58                   const struct tcore_user_info *ui);
59 const struct tcore_user_info*
60               tcore_user_request_ref_user_info(UserRequest *ur);
61
62 TReturn       tcore_user_request_send_response(UserRequest *ur,
63                   enum tcore_response_command command,
64                   unsigned int data_len, const void *data);
65
66 TReturn       tcore_user_request_set_command(UserRequest *ur,
67                   enum tcore_request_command command);
68
69 enum tcore_request_command
70               tcore_user_request_get_command(UserRequest *ur);
71
72 TReturn       tcore_user_request_set_data(UserRequest *ur,
73                   unsigned int data_len, const void *data);
74 const void*   tcore_user_request_ref_data(UserRequest *ur,
75                   unsigned int *data_len);
76
77 TReturn       tcore_user_request_set_metainfo(UserRequest *ur,
78                   unsigned int metainfo_len, const void *metainfo);
79 const void*   tcore_user_request_ref_metainfo(UserRequest *ur,
80                   unsigned int *metainfo_len);
81
82 __END_DECLS
83
84 #endif