\label{doc_decisions_6_implemented_global_keyset_md_md_doc_decisions_6_implemented_global_keyset}%
\Hypertarget{doc_decisions_6_implemented_global_keyset_md_md_doc_decisions_6_implemented_global_keyset}%
 \hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2405}{}\doxysection{Problem}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2405}
Some plugins need to communicate more data than is possible to do with metadata. This can limit the functionality of plugins, which need to exchange binary or very complex data.\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2406}{}\doxysection{Constraints}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2406}
\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2407}{}\doxysection{Assumptions}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2407}
\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2408}{}\doxysection{Considered Alternatives}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2408}
\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2409}{}\doxysection{Decision}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2409}
To make the communication between plugins easier, plugins will additionally get a handle to a global keyset via {\ttfamily \mbox{\hyperlink{group__plugin_ga436cda13ed70c0face08661a90620bf6}{elektra\+Plugin\+Get\+Global\+Key\+Set()}}}. The global keyset is tied to a KDB handle, initialized on {\ttfamily \mbox{\hyperlink{group__kdb_ga844e1299a84c3fbf1d3a905c5c893ba5}{kdb\+Open()}}} and deleted on {\ttfamily \mbox{\hyperlink{group__kdb_gadb54dc9fda17ee07deb9444df745c96f}{kdb\+Close()}}}.

The global keyset handle is initialized and accessible for all plugins except manually created plugins (by calling e.\+g. {\ttfamily \mbox{\hyperlink{elektra_2plugin_8c_a32a70a7876542c51d153164ac5108a57}{elektra\+Plugin\+Open()}}}).

This decision removes the need to exchange information between plugins via the parent\+Key.\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2410}{}\doxysection{Rationale}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2410}
The need for a global keyset arose when developing a global cache plugin. A global cache plugin needs to store internal and binary information for the KDB, which is simply not possible with metadata.\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2411}{}\doxysection{Implications}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2411}
Plugins are responsible for cleaning up their part of the global keyset.\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2412}{}\doxysection{Related Decisions}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2412}
\hypertarget{doc_decisions_6_implemented_global_keyset_md_autotoc_md2413}{}\doxysection{Notes}\label{doc_decisions_6_implemented_global_keyset_md_autotoc_md2413}
