Updated to hostap_2_6
[mech_eap.git] / wpa_supplicant / binder / binder_manager.h
diff --git a/wpa_supplicant/binder/binder_manager.h b/wpa_supplicant/binder/binder_manager.h
new file mode 100644 (file)
index 0000000..d8b7dd0
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * binder interface for wpa_supplicant daemon
+ * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
+ *
+ * This software may be distributed under the terms of the BSD license.
+ * See README for more details.
+ */
+
+#ifndef WPA_SUPPLICANT_BINDER_BINDER_MANAGER_H
+#define WPA_SUPPLICANT_BINDER_BINDER_MANAGER_H
+
+#include <map>
+#include <string>
+
+#include "iface.h"
+#include "supplicant.h"
+
+struct wpa_global;
+struct wpa_supplicant;
+
+namespace wpa_supplicant_binder {
+
+/**
+ * BinderManager is responsible for managing the lifetime of all
+ * binder objects created by wpa_supplicant. This is a singleton
+ * class which is created by the supplicant core and can be used
+ * to get references to the binder objects.
+ */
+class BinderManager
+{
+public:
+       static BinderManager *getInstance();
+       static void destroyInstance();
+       int registerBinderService(struct wpa_global *global);
+       int registerInterface(struct wpa_supplicant *wpa_s);
+       int unregisterInterface(struct wpa_supplicant *wpa_s);
+       int getIfaceBinderObjectByKey(
+           const void *iface_object_key,
+           android::sp<fi::w1::wpa_supplicant::IIface> *iface_object);
+
+private:
+       BinderManager() = default;
+       ~BinderManager() = default;
+
+       /* Singleton instance of this class. */
+       static BinderManager *instance_;
+       /* The main binder service object. */
+       android::sp<Supplicant> supplicant_object_;
+       /* Map of all the interface specific binder objects controlled by
+        * wpa_supplicant. This map is keyed in by the corresponding
+        * wpa_supplicant structure pointer. */
+       std::map<const void *, android::sp<Iface>> iface_object_map_;
+};
+
+} /* namespace wpa_supplicant_binder */
+
+#endif /* WPA_SUPPLICANT_BINDER_BINDER_MANAGER_H */