// // Copyright 2007 The Android Open Source Project // // Serve properties to the simulated runtime. // #ifndef _SIM_PROPERTY_SERVER_H #define _SIM_PROPERTY_SERVER_H #include "cutils/properties.h" #include "utils/List.h" /* * Define a thread that responds to requests from clients to get/set/list * system properties. */ class PropertyServer : public wxThread { public: PropertyServer(void) : mListenSock(-1) {} virtual ~PropertyServer(void); /* start the thread running */ bool StartThread(void); /* thread entry point */ virtual void* Entry(void); /* clear out all properties */ void ClearProperties(void); /* add some default values */ void SetDefaultProperties(void); /* copy a property into valueBuf; returns false if property not found */ bool GetProperty(const char* key, char* valueBuf); /* set the property, replacing it if it already exists */ bool SetProperty(const char* key, const char* value); /* property name constants */ static const char* kPropCheckJni; private: /* one property entry */ typedef struct Property { char key[PROPERTY_KEY_MAX]; char value[PROPERTY_VALUE_MAX]; } Property; /* create the UNIX-domain socket we listen on */ bool CreateSocket(const char* fileName); /* serve up properties */ void ServeProperties(void); /* handle a client request */ bool HandleRequest(int fd); /* listen here for new connections */ int mListenSock; /* list of connected fds to scan */ android::List<int> mClientList; /* set of known properties */ android::List<Property> mPropList; }; #endif // PROPERTY_SERVER_H