private void processMarketDataSvcEvent(MarketDataSvcEvent event)
    {
        _printStream.println("Received MARKET_DATA_SVC_EVENT: " + event + "\n");
        _printStream.println(event.getStatus().getStatusText());
        ServiceInfo si = (ServiceInfo)_services.get(event.getServiceName());
        if (si != null)
        {
            if (_directoryClient != null)
                _directoryClient.processServiceUpdated(si);
        }
        else
        {
            si = new MarketDataServiceInfo(event.getServiceName());
            // could store these properties in MarketDataServiceInfo
            // DataDictInfo[] ddi = event.getDataDictInfo();
            // QualityOfServiceInfo[] qosi = event.getQualityOfServiceInfo();
            // MarketDataSvcStatus status = event.getStatus();

            _services.put(event.getServiceName(), si);
            if (_directoryClient != null)
                _directoryClient.processNewService(si);
        }

        // download the dictionary used
        if (_autoDictionaryDownload)
        {
            requestDictionaries(event.getDataDictInfo());
        }

        if (!_isComplete && (_serviceName.length() == 0 || _services.containsKey(_serviceName))
                && _pendingDictionaries.isEmpty())
        {
            _isComplete = true;
            if (_client != null)
                _client.processComplete();
        }
    }