Writing a frontend ================== The Frontend API is mostly incomplete as of now and requires manual creation and management of several fairly low-level objects. Most commonly needed symbols can be imported from the :ref:`Frontend API module `. - A context object must be created by instantiating :class:`metropc.frontend.Context` and the pipeline can be spawned in a default configuration using :class:`metropc.frontend.StageGroup` - The ZeroMQ protocol can be en- and decoded using :func:`metropc.frontend.encode_protocol` and :func:`metropc.frontend.decode_protocol`, respectively. - To aid with matching data received individually to the same event, there are several matching strategies available via :class:`metropc.frontend.EventBuffer`. - Arbitrary pipeline configurations are possible by manually creating the respective :class:`metropc.stage.StageRunner` objects or more specifically its implementations :class:`metropc.stage.ThreadRunner` or :class:`metropc.stage.ProcessRunner`. A ``StageRunner`` is associated with a specific stage by passing it the corresponding context class such as :class:`metropc.stage.PoolContext` or :class:`metropc.stage.ReduceContext` (note **not** an instance!).