auto import from //depot/cupcake/@135843
diff --git a/simulator/app/PropertyServer.h b/simulator/app/PropertyServer.h
new file mode 100644
index 0000000..193dd70
--- /dev/null
+++ b/simulator/app/PropertyServer.h
@@ -0,0 +1,68 @@
+//
+// 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