Package com.kurento.kmf.media.factory

Source Code of com.kurento.kmf.media.factory.KmfMediaApi

package com.kurento.kmf.media.factory;

import static com.kurento.kmf.media.factory.KmfMediaApiProperties.KMF_TRANSPORT_PROP;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.KMF_TRANSPORT_RABBITMQ_VALUE;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.KMF_TRANSPORT_THRIFT_VALUE;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.KMF_TRANSPORT_WS_VALUE;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getKmfTransport;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getRabbitMqAddress;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getThriftKmfAddress;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getThriftKmsAddress;
import static com.kurento.kmf.media.factory.KmfMediaApiProperties.getWsUri;

import java.lang.reflect.Constructor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.kurento.kmf.common.Address;
import com.kurento.kmf.jsonrpcconnector.client.JsonRpcClient;
import com.kurento.kmf.jsonrpcconnector.client.JsonRpcClientWebSocket;
import com.kurento.kmf.thrift.jsonrpcconnector.JsonRpcClientThrift;

public class KmfMediaApi {

  private static final Logger log = LoggerFactory
      .getLogger(KmfMediaApi.class);

  public static MediaPipelineFactory createMediaPipelineFactoryFromSystemProps() {
    return createMediaPipelineFactoryFromSystemProps(null);
  }

  public static MediaPipelineFactory createMediaPipelineFactoryFromSystemProps(
      String prefix) {

    return new MediaPipelineFactory(
        createJsonRpcClientFromSystemProperties(prefix));
  }

  public static JsonRpcClient createJsonRpcClientFromSystemProperties() {
    return createJsonRpcClientFromSystemProperties(null);
  }

  @SuppressWarnings("resource")
  public static JsonRpcClient createJsonRpcClientFromSystemProperties(
      String prefix) {

    JsonRpcClient client;

    String kmfTransport = getKmfTransport(prefix);

    switch (kmfTransport) {
    case KMF_TRANSPORT_THRIFT_VALUE:

      log.info(
          "Creating JsonRpcClient with Thrift transport. Prefix: {}",
          prefix);

      Address kmsAddress = getThriftKmsAddress(prefix);
      Address kmfAddress = getThriftKmfAddress(prefix);

      log.info("kmsThriftAddress: {} and kmfThriftAddress: {}",
          kmsAddress, kmfAddress);

      client = new JsonRpcClientThrift(kmsAddress.getHost(),
          kmsAddress.getPort(), kmfAddress.getHost(),
          kmfAddress.getPort());

      break;

    case KMF_TRANSPORT_WS_VALUE:

      log.info(
          "Creating JsonRpcClient with WebSocket transport. Prefix: {}",
          prefix);

      client = new JsonRpcClientWebSocket(getWsUri(prefix));

      break;

    case KMF_TRANSPORT_RABBITMQ_VALUE:

      log.info(
          "Creating JsonRpcClient with RabbitMQ transport. Prefix: {}",
          prefix);

      client = newJsonRpcClientRabbitMq(getRabbitMqAddress(prefix));

      break;

    default:

      throw new RuntimeException("Invalid transport value in property '"
          + KMF_TRANSPORT_PROP + "': " + kmfTransport
          + ". Valid values are: " + KMF_TRANSPORT_THRIFT_VALUE
          + ", " + KMF_TRANSPORT_RABBITMQ_VALUE + " or "
          + KMF_TRANSPORT_WS_VALUE);

    }

    return client;
  }

  private static JsonRpcClient newJsonRpcClientRabbitMq(
      Address rabbitMqAddress) {

    try {

      @SuppressWarnings("unchecked")
      Class<? extends JsonRpcClient> clazz = (Class<? extends JsonRpcClient>) Class
          .forName("com.kurento.kmf.rabbitmq.client.JsonRpcClientRabbitMq");

      Constructor<? extends JsonRpcClient> constructor = clazz
          .getConstructor(Address.class);

      return constructor.newInstance(rabbitMqAddress);

    } catch (ClassNotFoundException e) {
      throw new RuntimeException(
          "MediaPipelineFactory is configured to use RabbitMQ but class "
              + "JsonRpcClientRabbitMq is not in the classpath. Plase review "
              + "you have correctly configured the dependency with kmf-rabbitmq project.",
          e);

    } catch (Exception e) {
      throw new RuntimeException(
          "Exception creating JsonRpcClientRabbitMq", e);
    }
  }

}
TOP

Related Classes of com.kurento.kmf.media.factory.KmfMediaApi

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.