Merge "Fix memory leaks in Locales" into tizen_2.1
[platform/framework/native/appfw.git] / src / io / inc / FIo_ChannelServiceProxy.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file        FIo_ChannelServiceProxy.h
20  * @brief       This is the header file for the _ChannelServiceProxy class.
21  *
22  * This file contains the declarations of _ChannelServiceProxy.
23  */
24
25
26 #ifndef _FIO_INTERNAL_CHANNEL_SERVICE_PROXY_H_
27 #define _FIO_INTERNAL_CHANNEL_SERVICE_PROXY_H_
28
29 #include <FBaseResult.h>
30 #include <FBaseObject.h>
31 #include <FBaseString.h>
32 #include <FBaseColHashMapT.h>
33 #include "FIo_IChannelService.h"
34 #include "FIo_IChannelServiceEventListener.h"
35 #include "FIo_IIpcClientEventListener.h"
36
37 namespace IPC { class Message; }
38
39 namespace Tizen { namespace Io
40 {
41
42 class _IpcClient;
43
44 class _ChannelServiceProxy
45         : public Tizen::Base::Object
46         , public _IChannelService
47         , public _IIpcClientEventListener
48 {
49 public:
50         _ChannelServiceProxy(void);
51
52         virtual ~_ChannelServiceProxy(void);
53
54         virtual result Construct(void);
55
56         virtual void OnIpcResponseReceived(_IpcClient& client, const IPC::Message& message);
57
58         // _IChannelService
59         virtual result RegisterChannel(const Tizen::Base::String& channelId, const _IChannelServiceEventListener& listener);
60         virtual result UnregisterChannel(const Tizen::Base::String& channelId);
61
62         virtual result SendRequest(const Tizen::Base::String& src, const Tizen::Base::String& dest, const Tizen::Base::Collection::ArrayList& args, int messageId);
63         virtual result SendNullRequest(const Tizen::Base::String& src, const Tizen::Base::String& dest, int messageId);
64
65         virtual result SendResponse(const Tizen::Base::String& src, const Tizen::Base::String& dest, const Tizen::Base::Collection::ArrayList& args, int messageId);
66         virtual result SendNullResponse(const Tizen::Base::String& src, const Tizen::Base::String& dest, int messageId);
67
68
69 private:
70         bool OnSendRequestMessage(const Tizen::Base::String& src, const Tizen::Base::String& dest, const Tizen::Base::Collection::ArrayList& args, int requestId);
71         bool OnSendNullRequestMessage(const Tizen::Base::String& src, const Tizen::Base::String& dest, int requestId);
72
73         bool OnSendResponseMessage(const Tizen::Base::String& src, const Tizen::Base::String& dest, const Tizen::Base::Collection::ArrayList& args, int requestId);
74         bool OnSendNullResponseMessage(const Tizen::Base::String& src, const Tizen::Base::String& dest, int requestId);
75
76
77 private:
78         class _StringHashProvider
79                 : public Tizen::Base::Collection::IHashCodeProviderT<Tizen::Base::String>
80         {
81         public:
82                 virtual int GetHashCode(const Tizen::Base::String& value) const
83                 {
84                         return value.GetHashCode();
85                 }
86         };
87
88         class _StringComparer
89                 : public Tizen::Base::Collection::IComparerT<Tizen::Base::String>
90         {
91         public:
92                 virtual result Compare(const Tizen::Base::String& string1, const Tizen::Base::String& string2, int& cmp) const
93                 {
94                         cmp = string1.CompareTo(string2);
95                         return E_SUCCESS;
96                 }
97         };
98
99 private:
100         _IpcClient* __pIpcClient;
101         Tizen::Base::Collection::HashMapT <Tizen::Base::String, _IChannelServiceEventListener*> __listeners;
102 }; // _ChannelServiceProxy
103
104
105 } } // Tizen::Io
106
107 #endif // _FIO_INTERNAL_CHANNEL_SERVICE_PROXY_H_