diff options
author | San Mehat <san@google.com> | 2009-05-06 11:14:21 -0700 |
---|---|---|
committer | San Mehat <san@google.com> | 2009-05-06 15:12:02 -0700 |
commit | 168415b822cae1f8b54ef09c41c11a9b97b87f40 (patch) | |
tree | 4265fda29301863478294812a3a53f4a13a72428 /include | |
parent | 770354d7e6cd471daed426fcf04bf7246e7cb18b (diff) | |
download | system_core-168415b822cae1f8b54ef09c41c11a9b97b87f40.zip system_core-168415b822cae1f8b54ef09c41c11a9b97b87f40.tar.gz system_core-168415b822cae1f8b54ef09c41c11a9b97b87f40.tar.bz2 |
libsysutils: New C++ system convenience library
This library contains re-usable classes for common
system level daemons. Initial consumers of this library
are 'nexus' and 'vold2'
Signed-off-by: San Mehat <san@google.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/sysutils/FrameworkCommand.h | 37 | ||||
-rw-r--r-- | include/sysutils/FrameworkListener.h | 37 | ||||
-rw-r--r-- | include/sysutils/FrameworkManager.h | 40 | ||||
-rw-r--r-- | include/sysutils/NetlinkEvent.h | 44 | ||||
-rw-r--r-- | include/sysutils/NetlinkListener.h | 32 | ||||
-rw-r--r-- | include/sysutils/SocketListener.h | 35 |
6 files changed, 225 insertions, 0 deletions
diff --git a/include/sysutils/FrameworkCommand.h b/include/sysutils/FrameworkCommand.h new file mode 100644 index 0000000..952e99a --- /dev/null +++ b/include/sysutils/FrameworkCommand.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 __FRAMEWORK_CMD_HANDLER_H +#define __FRAMEWORK_CMD_HANDLER_H + +#include "../../../frameworks/base/include/utils/List.h" + + +class FrameworkCommand { +private: + const char *mCommand; + +public: + + FrameworkCommand(const char *cmd); + virtual ~FrameworkCommand() { } + + virtual int runCommand(char *data); + + const char *getCommand() { return mCommand; } +}; + +typedef android::List<FrameworkCommand *> FrameworkCommandCollection; +#endif diff --git a/include/sysutils/FrameworkListener.h b/include/sysutils/FrameworkListener.h new file mode 100644 index 0000000..1454a6f --- /dev/null +++ b/include/sysutils/FrameworkListener.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 _FRAMEWORKSOCKETLISTENER_H +#define _FRAMEWORKSOCKETLISTENER_H + +#include "SocketListener.h" +#include "FrameworkCommand.h" + +class FrameworkListener : public SocketListener { +private: + FrameworkCommandCollection *mCommands; + +public: + FrameworkListener(const char *socketName); + virtual ~FrameworkListener() {} + +protected: + void registerCmd(FrameworkCommand *cmd); + virtual bool onDataAvailable(int socket); + +private: + void dispatchCommand(char *cmd); +}; +#endif diff --git a/include/sysutils/FrameworkManager.h b/include/sysutils/FrameworkManager.h new file mode 100644 index 0000000..8a24d33 --- /dev/null +++ b/include/sysutils/FrameworkManager.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 _FRAMEWORKMANAGER_H +#define _FRAMEWORKMANAGER_H + +#include <pthread.h> + +class FrameworkListener; + +class FrameworkManager { + int mDoorbell; // Socket used to accept connections from framework + int mFwSock; // Socket used to communicate with framework + const char *mSocketName; + + FrameworkListener *mListener; + + pthread_mutex_t mWriteMutex; + +public: + FrameworkManager(FrameworkListener *Listener); + virtual ~FrameworkManager() {} + + int run(); + int sendMsg(char *msg); + int sendMsg(char *msg, char *data); +}; +#endif diff --git a/include/sysutils/NetlinkEvent.h b/include/sysutils/NetlinkEvent.h new file mode 100644 index 0000000..95e83a3 --- /dev/null +++ b/include/sysutils/NetlinkEvent.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 _NETLINKEVENT_H +#define _NETLINKEVENT_H + +#define NL_PARAMS_MAX 32 + +class NetlinkEvent { + int mSeq; + char *mPath; + int mAction; + char *mSubsystem; + char *mParams[NL_PARAMS_MAX]; + +public: + const static int NlActionUnknown; + const static int NlActionAdd; + const static int NlActionRemove; + const static int NlActionChange; + + NetlinkEvent(); + virtual ~NetlinkEvent(); + + bool decode(char *buffer, int size); + const char *findParam(const char *paramName); + + const char *getSubsystem() { return mSubsystem; } + int getAction() { return mAction; } +}; + +#endif diff --git a/include/sysutils/NetlinkListener.h b/include/sysutils/NetlinkListener.h new file mode 100644 index 0000000..8ac811c --- /dev/null +++ b/include/sysutils/NetlinkListener.h @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 _NETLINKLISTENER_H +#define _NETLINKLISTENER_H + +#include "SocketListener.h" + +class NetlinkEvent; + +class NetlinkListener : public SocketListener { + char mBuffer[64 * 1024]; + +public: + NetlinkListener(int socket); + virtual ~NetlinkListener() {} +protected: + virtual bool onDataAvailable(int socket); +}; +#endif diff --git a/include/sysutils/SocketListener.h b/include/sysutils/SocketListener.h new file mode 100644 index 0000000..f079dba --- /dev/null +++ b/include/sysutils/SocketListener.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * 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 _SOCKETLISTENER_H +#define _SOCKETLISTENER_H + +class SocketListener { + int mSock; + int mCsock; + int mAcceptClients; + const char *mSocketName; + +public: + SocketListener(const char *socketName, bool acceptClients); + SocketListener(int socketFd, bool acceptClients); + + virtual ~SocketListener() {} + virtual int run(); + +protected: + virtual bool onDataAvailable(int socket); +}; +#endif |