# Class ProxyDeviceService

Namespace
  adas_core.module.ProxyDevices.Services

Assembly
  adas-core.module.ProxyDevices.dll

ProxyDeviceService is responsible for managing proxy devices, processing requests, and streaming data from the devices. It uses a cache to store device instances for efficient retrieval and ensures that only enabled devices are processed. The service handles HTTP requests and returns appropriate responses based on the device's availability and functionality.

    public class ProxyDeviceService : IProxyDeviceService

Inheritance
  object
  ProxyDeviceService

Implements
  IProxyDeviceService

Inherited Members
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

Extension Methods
  NumberUtils.IsNumber(object)
  NumberUtils.ToDouble(object)
  ObjectUtils.ToStr(object?)

## Constructors

### ProxyDeviceService(IOptions<ProxyDeviceSettings>)

ProxyDeviceService is responsible for managing proxy devices, processing requests, and streaming data from the devices. It uses a cache to store device instances for efficient retrieval and ensures that only enabled devices are processed. The service handles HTTP requests and returns appropriate responses based on the device's availability and functionality.

    public ProxyDeviceService(IOptions<ProxyDeviceSettings> settings)

#### Parameters

`settings` IOptions<ProxyDeviceSettings>

  The settings for the proxy devices, including their configuration and parameters.

## Methods

### Process(string)

Process method takes a deviceId as input, retrieves the corresponding device from the cache or creates a new instance if it doesn't exist, and then calls the Process method of the device. It returns an HttpResponseMessage based on the outcome of the operation, handling any exceptions that may occur during the process.

    public Task<HttpResponseMessage> Process(string deviceId)

#### Parameters

`deviceId` string

  The unique identifier of the proxy device to be processed.

#### Returns

Task<HttpResponseMessage>

  A task that represents the asynchronous operation. The task result contains the HttpResponseMessage returned by the device's Process method.

### Stream(string)

Stream method takes a deviceId as input, retrieves the corresponding device from the cache or creates a new instance if it doesn't exist, and then calls the Stream method of the device.

    public Task<HttpResponseMessage> Stream(string deviceId)

#### Parameters

`deviceId` string

  The unique identifier of the proxy device to be streamed.

#### Returns

Task<HttpResponseMessage>

  A task that represents the asynchronous operation. The task result contains the HttpResponseMessage returned by the device's Stream method.