/******************************************************************************* * Copyright (c) 2013 Luigi Sgro. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Luigi Sgro - initial API and implementation ******************************************************************************/ package com.quantcomponents.marketdata.osgi.host; import java.net.ConnectException; import java.util.logging.Logger; import com.quantcomponents.core.exceptions.RequestFailedException; import com.quantcomponents.core.remote.ITaskMonitorHost; import com.quantcomponents.core.remote.ServiceHandle; import com.quantcomponents.core.remote.TaskMonitorProxy; import com.quantcomponents.marketdata.IMarketDataManager; import com.quantcomponents.marketdata.IRealTimeMarketDataManager; import com.quantcomponents.marketdata.osgi.IRealTimeMarketDataManagerHost; import com.quantcomponents.marketdata.osgi.IStockDatabaseHost; import com.quantcomponents.marketdata.osgi.IStockDatabaseHostLocal; public class RealTimeMarketDataManagerHost extends MarketDataManagerHost implements IRealTimeMarketDataManagerHost { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(RealTimeMarketDataManagerHost.class.getName()); private volatile ITaskMonitorHost taskMonitorHost; public RealTimeMarketDataManagerHost() {} public RealTimeMarketDataManagerHost(IRealTimeMarketDataManager dataManagerService, IStockDatabaseHostLocal stockDatabaseHost, ITaskMonitorHost taskMonitorHost) { super(dataManagerService, stockDatabaseHost, taskMonitorHost); } @Override public void setDataManagerService(IMarketDataManager dataManagerService) { IRealTimeMarketDataManager.class.cast(dataManagerService); // ensure correct type of parameter super.setDataManagerService(dataManagerService); } @Override public void startRealtimeUpdate(ServiceHandle<IStockDatabaseHost> stockDbHostHandle, boolean fillHistoricalGap, ServiceHandle<ITaskMonitorHost> taskMonitorHandle) throws ConnectException, RequestFailedException { ServiceInfo serviceInfo = retrieveServiceInfo(stockDbHostHandle); getMarketDataManager().startRealtimeUpdate(serviceInfo.stockDb, fillHistoricalGap, taskMonitorHost == null || taskMonitorHandle == null ? null : new TaskMonitorProxy(taskMonitorHost, taskMonitorHandle)); } @Override public void stopRealtimeUpdate(ServiceHandle<IStockDatabaseHost> stockDbHostHandle) throws ConnectException, RequestFailedException { ServiceInfo serviceInfo = retrieveServiceInfo(stockDbHostHandle); getMarketDataManager().stopRealtimeUpdate(serviceInfo.stockDb); } @Override public boolean isRealtimeUpdate(ServiceHandle<IStockDatabaseHost> stockDbHostHandle) throws ConnectException, RequestFailedException { ServiceInfo serviceInfo = retrieveServiceInfo(stockDbHostHandle); return getMarketDataManager().isRealtimeUpdate(serviceInfo.stockDb); } @Override protected IRealTimeMarketDataManager getMarketDataManager() { return (IRealTimeMarketDataManager) super.getMarketDataManager(); } }