## Overview

A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.

## Initialization

The BBGMarketData API depends on the Glue42 [Interop](https://docs.glue42.com/glue42-concepts/data-sharing-between-apps/interop/overview/index.html) API. It also accepts a config object to control logging behavior, optionally provide a custom logger implementation and session settings to overwrite default session options and session identity options. 

```typescript
import BBGMarketData, {
  BBGMarketDataAPI,
  SessionOptions,
  FieldSearchRequestArguments,
  FieldSearchRequest,
  ResponseData,
  FieldSearchData
} from "@glue42/bbg-market-data";
import Glue from "@glue42/desktop";

const glue = await Glue();

const sessionOptions: SessionOptions = {
  connectTimeout: 15000
}
const bbgMarketData: BBGMarketDataAPI = BBGMarketData(glue.interop, {
  debug: true, // Enable only if you need logging.
  sessionSettings: {
    options: sessionOptions
  }
});

// Start using the library.
```

Example (creating a FieldSearchRequest request):

```typescript
const requestArgs: FieldSearchRequestArguments = {
  searchSpec: "last price",
  returnFieldDocumentation: true
};

const request: FieldSearchRequest = bbgMarketData.createFieldSearchRequest(
  requestArgs
);

request.onData(function handleResponse(
  response: ResponseData<FieldSearchData>
): void {
  if (response.isLast) {
    // Handle final response
  } else {
    // Handle partial response
  }
});

request.onError(function handleError(error): void {
  // Request failed. Process the error.
});

// Send the actual request to Bloomberg.
request
  .open()
  .then((response: FieldSearchData[] | undefined) => {
    //Request completed. Process aggregated response.
  })
  .catch((error) => {
    // Request failed. Process the error.
  });
```
