/*************************************************************************** * * Copyright 2010,2011 BMW Car IT GmbH * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ****************************************************************************/ #ifndef _DBUSINTROSPECTION_H_ #define _DBUSINTROSPECTION_H_ #include using std::stringstream; #include using std::string; #include "DBUSTypes.h" #include class DBUSIntrospection { public: DBUSIntrospection(MethodTable* table, SignalTable* stable); void process(DBusConnection* conn, DBusMessage* msg); private: void generateString(void); void addHeader(void); void addArgument(string argname, string direction, string type); void addEntry(MethodTable entry); void addEntry(SignalTable entry); void openNode(string nodename); void closeNode(void); void openInterface(string interfacename); void closeInterface(void); void openMethod(string methodname); void closeMethod(void); void addSignal(string signalname); private: stringstream m_introspectionString; MethodTable* m_methodTable; SignalTable* m_signalTable; }; #endif // _DBUSINTROSPECTION_H_