README.md

# MetaPidRequest

MetaPidRequest provides an OTP application for keeping
track of meta data associated with requests.

It exposes a simple %{pid => metadata} KV GenServer.

MetaPidRequest can be used to keep track of request ids
and outbound service call times associated with a connection
process.

It exposes a Plug to make managing this life cycle easier.

## Installation

  1. Add `meta_pid_request` to your list of dependencies in `mix.exs`:

    ```elixir
    def deps do
      {:meta_pid_request, git: "git@github.com:avvo/meta_pid_request.git"}
    end
    ```

  2. Ensure `meta_pid_request` is started before your application:

    ```elixir
    def application do
      [applications: [:meta_pid_request]]
    end
    ```

  3. Use the Plug in any pipelined HTTP application to initialize entries in the registry

    ```elixir
      # works best if included after Plug.RequestId
      plug MetaPidRequest.Plug
    ```

## Use

  ```elixir
    # To register a new request to the registry
    # (this is handled automatically by the plug)
    MetaPidRequest.register_request(pid, request_id)

    # To retrieve metadata for a pid
    MetaPidRequest.fetch_metadata(pid)

    # To add a service call time for a pid
    MetaPidRequest.add_time(pid, service_name, duration)
  ```

## Development

To test:
```
mix test
```