DBUSCommunicator: Add clean up methods to remove messages filters
[profile/ivi/layer-management.git] / LayerManagerPlugins / Communicators / DBUSCommunicator / include / DBUSCommunicator.h
1 /***************************************************************************
2  *
3  * Copyright 2010,2011 BMW Car IT GmbH
4  *
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  ****************************************************************************/
19 #ifndef _DBUSCOMMUNICATOR_H_
20 #define _DBUSCOMMUNICATOR_H_
21
22 /**
23  * \defgroup DbusCommunicator DBUS Communicator API
24  */
25
26 #include "ICommunicator.h"
27 #include "Log.h"
28
29 #include "ICommandExecutor.h"
30 #include "IApplicationReference.h"
31 #include "ApplicationReferenceMap.h"
32 #include "CommitCommand.h"
33 #include "LayerCreateCommand.h"
34 #include "LayergroupCreateCommand.h"
35 #include "SurfaceCreateCommand.h"
36 #include "SurfacegroupCreateCommand.h"
37 #include "SurfaceGetDimensionCommand.h"
38 #include "LayerGetDimensionCommand.h"
39 #include "SurfaceGetOpacityCommand.h"
40 #include "LayerGetOpacityCommand.h"
41 #include "SurfaceGetPixelformatCommand.h"
42 #include "LayerGetVisibilityCommand.h"
43 #include "SurfaceGetVisibilityCommand.h"
44 #include "LayerAddSurfaceCommand.h"
45 #include "LayerRemoveSurfaceCommand.h"
46 #include "LayerRemoveCommand.h"
47 #include "SurfaceRemoveCommand.h"
48 #include "LayergroupRemoveCommand.h"
49 #include "SurfacegroupRemoveCommand.h"
50 #include "SurfaceGetOrientationCommand.h"
51 #include "LayerGetOrientationCommand.h"
52 #include "LayergroupAddLayerCommand.h"
53 #include "LayergroupRemoveLayerCommand.h"
54 #include "LayerSetDestinationRectangleCommand.h"
55 #include "SurfaceSetDestinationRectangleCommand.h"
56 #include "LayerSetOpacityCommand.h"
57 #include "LayergroupSetOpacityCommand.h"
58 #include "SurfaceSetOpacityCommand.h"
59 #include "SurfacegroupSetOpacityCommand.h"
60 #include "LayerSetSourceRectangleCommand.h"
61 #include "SurfaceSetSourceRectangleCommand.h"
62 #include "LayerSetOrientationCommand.h"
63 #include "SurfaceSetOrientationCommand.h"
64 #include "SurfacegroupAddSurfaceCommand.h"
65 #include "SurfacegroupRemoveSurfaceCommand.h"
66 #include "LayerSetVisibilityCommand.h"
67 #include "SurfaceSetVisibilityCommand.h"
68 #include "LayergroupSetVisibilityCommand.h"
69 #include "SurfacegroupSetVisibilityCommand.h"
70 #include "DebugCommand.h"
71 #include "ExitCommand.h"
72 #include "ScreenSetRenderOrderCommand.h"
73 #include "LayerSetRenderOrderCommand.h"
74 #include "LayerSetDimensionCommand.h"
75 #include "SurfaceSetDimensionCommand.h"
76 #include "LayerSetPositionCommand.h"
77 #include "SurfaceSetPositionCommand.h"
78 #include "LayerGetPositionCommand.h"
79 #include "SurfaceGetPositionCommand.h"
80 #include "ShaderCreateCommand.h"
81 #include "ShaderDestroyCommand.h"
82 #include "SurfaceSetShaderCommand.h"
83 #include "ShaderSetUniformsCommand.h"
84 #include "ScreenDumpCommand.h"
85 #include "LayerDumpCommand.h"
86 #include "SurfaceDumpCommand.h"
87 #include "SurfaceSetNativeContentCommand.h"
88
89 #include <dbus/dbus.h>
90 #include "DBUSTypes.h"
91
92 class DBUSCommunicator: public ICommunicator
93 {
94 public:
95     DBUSCommunicator(ICommandExecutor* executor);
96     virtual ~DBUSCommunicator() {}
97     virtual bool start();
98     virtual void stop();
99     virtual void process(int timeout_ms);
100     virtual void setdebug(bool onoff);
101     void ServiceConnect(DBusConnection* conn, DBusMessage* msg);
102     void ServiceDisconnect(DBusConnection* conn, DBusMessage* msg);    
103     void Debug(DBusConnection* conn, DBusMessage* msg);
104     void ScreenShot(DBusConnection* conn, DBusMessage* msg);
105     void ScreenShotOfLayer(DBusConnection* conn, DBusMessage* msg);
106     void ScreenShotOfSurface(DBusConnection* conn, DBusMessage* msg);
107     void GetScreenResolution(DBusConnection* conn, DBusMessage* msg);
108     void GetNumberOfHardwareLayers(DBusConnection* conn, DBusMessage* msg);
109     void GetScreenIDs(DBusConnection* conn, DBusMessage* msg);
110     void ListAllLayerIDS(DBusConnection* conn, DBusMessage* msg);
111     void ListAllLayerIDsOnScreen(DBusConnection* conn, DBusMessage* msg);
112     void ListAllSurfaceIDS(DBusConnection* conn, DBusMessage* msg);
113     void ListAllLayerGroupIDS(DBusConnection* conn, DBusMessage* msg);
114     void ListAllSurfaceGroupIDS(DBusConnection* conn, DBusMessage* msg);
115     void ListSurfacesOfSurfacegroup(DBusConnection* conn, DBusMessage* msg);
116     void ListLayersOfLayergroup(DBusConnection* conn, DBusMessage* msg);
117     void ListSurfaceofLayer(DBusConnection* conn, DBusMessage* msg);
118     void GetPropertiesOfSurface(DBusConnection* conn, DBusMessage* msg);
119     void GetPropertiesOfLayer(DBusConnection* conn, DBusMessage* msg);
120     void CreateSurface(DBusConnection* conn, DBusMessage* msg);
121     void InitializeSurface(DBusConnection* conn, DBusMessage* msg);
122     void InitializeSurfaceFromId(DBusConnection* conn, DBusMessage* msg);
123     void CreateSurfaceFromId(DBusConnection* conn, DBusMessage* msg);
124     void SetSurfaceNativeContent(DBusConnection* conn, DBusMessage* msg);
125     void RemoveSurface(DBusConnection* conn, DBusMessage* msg);
126     void CreateLayer(DBusConnection* conn, DBusMessage* msg);
127     void CreateLayerFromId(DBusConnection* conn, DBusMessage* msg);
128     void CreateLayerWithDimension(DBusConnection* conn, DBusMessage* msg);
129     void CreateLayerFromIdWithDimension(DBusConnection* conn, DBusMessage* msg);
130     void RemoveLayer(DBusConnection* conn, DBusMessage* msg);
131     void AddSurfaceToSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
132     void RemoveSurfaceFromSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
133     void AddLayerToLayerGroup(DBusConnection* conn, DBusMessage* msg);
134     void RemoveLayerFromLayerGroup(DBusConnection* conn, DBusMessage* msg);
135     void AddSurfaceToLayer(DBusConnection* conn, DBusMessage* msg);
136     void RemoveSurfaceFromLayer(DBusConnection* conn, DBusMessage* msg);
137     void CreateSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
138     void CreateSurfaceGroupFromId(DBusConnection* conn, DBusMessage* msg);
139     void RemoveSurfaceGroup(DBusConnection* conn, DBusMessage* msg);
140     void CreateLayerGroup(DBusConnection* conn, DBusMessage* msg);
141     void CreateLayerGroupFromId(DBusConnection* conn, DBusMessage* msg);
142     void RemoveLayerGroup(DBusConnection* conn, DBusMessage* msg);
143     void SetSurfaceSourceRegion(DBusConnection* conn, DBusMessage* msg);
144     void SetLayerSourceRegion(DBusConnection* conn, DBusMessage* msg);
145     void SetSurfaceDestinationRegion(DBusConnection* conn, DBusMessage* msg);
146     void SetSurfacePosition(DBusConnection* conn, DBusMessage* msg);
147     void GetSurfacePosition(DBusConnection* conn, DBusMessage* msg);
148     void SetSurfaceDimension(DBusConnection* conn, DBusMessage* msg);
149     void SetLayerDestinationRegion(DBusConnection* conn, DBusMessage* msg);
150     void SetLayerPosition(DBusConnection* conn, DBusMessage* msg);
151     void GetLayerPosition(DBusConnection* conn, DBusMessage* msg);
152     void SetLayerDimension(DBusConnection* conn, DBusMessage* msg);
153     void GetLayerDimension(DBusConnection* conn, DBusMessage* msg);
154     void GetSurfaceDimension(DBusConnection* conn, DBusMessage* msg);
155     void SetSurfaceOpacity(DBusConnection* conn, DBusMessage* msg);
156     void SetLayerOpacity(DBusConnection* conn, DBusMessage* msg);
157     void SetSurfacegroupOpacity(DBusConnection* conn, DBusMessage* msg);
158     void SetLayergroupOpacity(DBusConnection* conn, DBusMessage* msg);
159     void GetSurfaceOpacity(DBusConnection* conn, DBusMessage* msg);
160     void GetLayerOpacity(DBusConnection* conn, DBusMessage* msg);
161     void GetSurfacegroupOpacity(DBusConnection* conn, DBusMessage* msg);
162     void GetLayergroupOpacity(DBusConnection* conn, DBusMessage* msg);
163     void SetSurfaceOrientation(DBusConnection* conn, DBusMessage* msg);
164     void GetSurfaceOrientation(DBusConnection* conn, DBusMessage* msg);
165     void SetLayerOrientation(DBusConnection* conn, DBusMessage* msg);
166     void GetLayerOrientation(DBusConnection* conn, DBusMessage* msg);
167     void GetSurfacePixelformat(DBusConnection* conn, DBusMessage* msg);
168     void SetSurfaceVisibility(DBusConnection* conn, DBusMessage* msg);
169     void SetLayerVisibility(DBusConnection* conn, DBusMessage* msg);
170     void GetSurfaceVisibility(DBusConnection* conn, DBusMessage* msg);
171     void GetLayerVisibility(DBusConnection* conn, DBusMessage* msg);
172     void SetSurfacegroupVisibility(DBusConnection* conn, DBusMessage* msg);
173     void SetLayergroupVisibility(DBusConnection* conn, DBusMessage* msg);
174     void SetRenderOrderOfLayers(DBusConnection* conn, DBusMessage* msg);
175     void SetSurfaceRenderOrderWithinLayer(DBusConnection* conn, DBusMessage* msg);
176     void GetLayerType(DBusConnection* conn, DBusMessage* msg);
177     void GetLayertypeCapabilities(DBusConnection* conn, DBusMessage* msg);
178     void GetLayerCapabilities(DBusConnection* conn, DBusMessage* msg);
179     void FadeIn(DBusConnection* conn, DBusMessage* msg);
180     void SynchronizedFade(DBusConnection* conn, DBusMessage* msg);
181     void FadeOut(DBusConnection* conn, DBusMessage* msg);
182     void Exit(DBusConnection* conn, DBusMessage* msg);
183     void CommitChanges(DBusConnection* conn, DBusMessage* msg);
184     void CreateShader(DBusConnection* conn, DBusMessage* msg);
185     void DestroyShader(DBusConnection* conn, DBusMessage* msg);
186     void SetShader(DBusConnection* conn, DBusMessage* msg);
187     void SetUniforms(DBusConnection* conn, DBusMessage* msg);
188     DBusHandlerResult delegateMessage(DBusConnection* conn, DBusMessage* msg);
189
190
191 private:
192     void AddClientWatch(DBusConnection *conn, char* sender);
193     void RemoveClientWatch(DBusConnection *conn, char* sender);
194     void RemoveApplicationReference(char* owner);
195     static DBusHandlerResult processMessageFunc(DBusConnection* conn,DBusMessage* msg, void *user_data);
196     static void unregisterMessageFunc(DBusConnection* conn, void *user_data);
197     bool m_running;
198 };
199
200 #endif /* _DBUSCOMMUNICATOR_H_ */