private void Reader_EntryRead(ObeyFileReader aReader, string aHost, string aDevice)
        {
            // Check if there is a corresponding map file in the host file system.
            FileInfo mapFile = new FileInfo(aHost + KMapFileExtension);

            if (mapFile.Exists)
            {
                bool supported = iMapProvider.IsSupported(mapFile.FullName);
                if (supported)
                {
                    // First get the map provider to create its own concrete list of
                    // sources for the specified map file. This should just be a single
                    // source and a single collection since that is the logical encapsulating
                    // domain for a given map file.
                    SymSourceCollection mapSources = iMapProvider.CreateSources(mapFile.FullName);

                    // Next, we iterate through any sources (probably just one) and then
                    // extract the collection & provider that was specified for that source.
                    //
                    // We want to effectively sit the OBY source plugin in between the symbol
                    // engine and the map plugin so that it can ensure that we only read a
                    // given map file at the point when the map file symbol collection is activated.
                    foreach (SymSource mapSource in mapSources)
                    {
                        SymSource obeySource = new ObeySource(mapSource.URI, this, mapSource);
                        iTransientSources.Add(obeySource);
                    }
                }
                else
                {
                    SymbianUtils.SymDebug.SymDebugger.Break();
                }
            }
        }
        public override SymSourceCollection CreateSources(string aFileName)
        {
            System.Diagnostics.Debug.Assert(iMapProvider != null);

            // Read OBY file and resolve to map files in host file system.
            iTransientSources = new SymSourceCollection();
            try
            {
                ObeyFileReader reader = new ObeyFileReader(aFileName);
                reader.EntryRead += new ObeyFileReader.ObyEntryHandler(Reader_EntryRead);
                reader.Read(TSynchronicity.ESynchronous);
            }
            catch (Exception)
            {
                iTransientSources.Clear();
            }

            // This source provider doesn't directly create any sources
            SymSourceCollection ret = iTransientSources;

            iTransientSources = null;
            return(ret);
        }