public void Can_load_srv_file(TestMessage file)
        {
            var parser = new ServiceParser(file.Content.Value);
            var actual = parser.Parse();

            Assert.NotNull(actual);
        }
Example #2
0
 public FileService(IBuildingRepository buildingRepo,
                    IFileRepository fileRepo,
                    IRoomRepository roomRepo,
                    IUnitRepository unitRepo,
                    IGenericRepository <BuildingCategory> buildingTypeRepo,
                    IGenericRepository <Guest> guestRepo,
                    IGenericRepository <Stay> stayRepo,
                    IGenericRepository <Rank> rankRepo,
                    IGenericRepository <Service> serviceRepo,
                    BuildingService buildingsService,
                    RankParser rankConverter,
                    ServiceParser serviceParser,
                    IMapper mapper)
 {
     _buildingRepo     = buildingRepo;
     _buildingTypeRepo = buildingTypeRepo;
     _fileRepo         = fileRepo;
     _roomRepo         = roomRepo;
     _unitRepo         = unitRepo;
     _guestRepo        = guestRepo;
     _stayRepo         = stayRepo;
     _rankRepo         = rankRepo;
     _serviceRepo      = serviceRepo;
     _buildingsService = buildingsService;
     _rankConverter    = rankConverter;
     _serviceParser    = serviceParser;
     _mapper           = mapper;
 }
Example #3
0
        private void ParseMessagesInternal()
        {
            var packageDependencyCollector = new PackageDependencyCollector(new [] { Package.Name });
            var typeDependencyCollector    = new TypeDependencyCollector(new [] { Package.Name });

            var collectors = new RosMessageVisitorListenerCollection(new IRosMessageVisitorListener[]
                                                                     { packageDependencyCollector, typeDependencyCollector });

            var messages = new List <KeyValuePair <RosTypeInfo, MessageDescriptor> >();
            var actions  = new List <KeyValuePair <RosTypeInfo, ActionDescriptor> >();
            var services = new List <KeyValuePair <RosTypeInfo, ServiceDescriptor> >();

            foreach (var messageFile in Package.Messages)
            {
                using (var fileStream = File.OpenRead(messageFile.FullName))
                {
                    var rosType = RosTypeInfo.CreateRosType(Package.Name, messageFile.NameWithoutExtension());

                    switch (messageFile.GetRosMessageType())
                    {
                    case RosMessageType.Message:
                        var messageParser     = new RobSharper.Ros.MessageParser.MessageParser(fileStream);
                        var messageDescriptor = messageParser.Parse(collectors);

                        messages.Add(
                            new KeyValuePair <RosTypeInfo, MessageDescriptor>(rosType, messageDescriptor));
                        break;

                    case RosMessageType.Service:
                        var serviceParser     = new ServiceParser(fileStream);
                        var serviceDescriptor = serviceParser.Parse(collectors);

                        services.Add(
                            new KeyValuePair <RosTypeInfo, ServiceDescriptor>(rosType, serviceDescriptor));
                        break;

                    case RosMessageType.Action:
                        var actionParser     = new ActionParser(fileStream);
                        var actionDescriptor = actionParser.Parse(collectors);

                        actions.Add(
                            new KeyValuePair <RosTypeInfo, ActionDescriptor>(rosType, actionDescriptor));
                        break;
                    }
                }
            }

            // Add actionlib dependency
            if (actions.Any() && !packageDependencyCollector.Dependencies.Contains("actionlib_msgs"))
            {
                packageDependencyCollector.Dependencies.Add("actionlib_msgs");
            }

            _packageDependencies      = packageDependencyCollector.Dependencies;
            _externalTypeDependencies = typeDependencyCollector.Dependencies;
            _messages = messages;
            _actions  = actions;
            _services = services;
        }
        public void ParseFileStream(string filePath)
        {
            ServiceDescriptor descriptor;

            using (var file = File.OpenRead(filePath))
            {
                var parser = new ServiceParser(file);
                descriptor = parser.Parse();
            }
        }
Example #5
0
        /// <summary>
        /// Ändert die aktuelle Tonspur.
        /// </summary>
        /// <param name="audio">Name der aktuellen Tonspur gemäß der Senderliste
        /// oder <i>null</i> für die bevorzugte Tonspur.</param>
        /// <returns>Name des aktuellen Senders und der aktuellen Tonspur.</returns>
        public override string SetAudio(string audio)
        {
            // Not possible
            if (null == CurrentSourceConfiguration)
            {
                return((null == CurrentService) ? StationName : CurrentService.Name);
            }

            // Ask favorites for default
            if (string.IsNullOrEmpty(audio))
            {
                audio = Favorites.GetPreferredAudio();
            }

            // Always remember
            m_LastAudio = audio;

            // Remember if not a service
            if (null == CurrentPortal)
            {
                LocalInfo.LocalAudio = audio;
            }

            // Audio to use
            AudioInformation info = null;

            // Try default
            if (!string.IsNullOrEmpty(audio))
            {
                info = CurrentSourceConfiguration.AudioTracks.Find(a => 0 == string.Compare(audio, a.ToString(), true));
            }

            // Start up
            Activate(info);

            // Enable service parser if we are allowed to to so
            if (!Profile.DisableProgramGuide)
            {
                if (!Profile.GetFilter(CurrentSourceConfiguration.Source).DisableProgramGuide)
                {
                    // Stop current
                    if (null != ServiceParser)
                    {
                        ServiceParser.Disable();
                    }

                    // Create new
                    ServiceParser = new ServiceParser(Profile, (null == CurrentPortal) ? CurrentSourceConfiguration.Source : CurrentPortal.Source);
                }
            }

            // Report full name
            return(string.Format("{0} ({1})", (null == CurrentService) ? StationName : CurrentService.Name, (null == info) ? "-" : info.ToString()));
        }
        public void Can_parse_empty_service()
        {
            var message = "---";

            var parser = new ServiceParser(message);
            var actual = parser.Parse();

            Assert.NotNull(actual);
            Assert.NotNull(actual.Request);
            Assert.NotNull(actual.Response);

            Assert.True(actual.Request.IsEmpty);
            Assert.True(actual.Response.IsEmpty);
        }
Example #7
0
        /// <summary>
        /// Beendet die Datenübertragung in den DirectShow Graphen und zusätzlich
        /// eine eventuell laufende Aufzeichnung.
        /// </summary>
        /// <param name="pictureOnly">Gesetzt, wenn die Aufzeichnung selbst weiter laufen soll.</param>
        private void StopReceivers(bool pictureOnly)
        {
            // Stop all consumers we registered
            Device.RemoveProgramGuideConsumer(ReceiveEPG);
            Device.SetConsumerState(VideoId, null);
            Device.SetConsumerState(AudioId, null);
            Device.SetConsumerState(TextId, null);

            // Restart videotext caching from scratch
            VideoText.Deactivate(true);

            // Partial mode
            if (pictureOnly)
            {
                return;
            }

            // Stop reader
            using (var reader = m_InfoReader)
            {
                // Forget
                m_InfoReader = null;

                // Enforce proper shutdown
                if (reader != null)
                {
                    reader.Cancel();
                }
            }

            // Reset flag
            m_HasPendingGroupInformation = false;

            // Stop portal parser
            if (null != ServiceParser)
            {
                // Stop it
                ServiceParser.Disable();

                // Forget it
                ServiceParser = null;
            }

            // Stop recording, too
            using (SourceStreamsManager recording = RecordingStream)
                RecordingStream = null;
        }
 /// <summary>
 /// Beendet die Auswertung der programmzeitschrift für die NVOD Dienste.
 /// </summary>
 private void DisableServiceParser()
 {
     // Stop service parser
     if (m_ServiceParser != null)
     {
         try
         {
             // Shut down
             m_ServiceParser.Disable();
         }
         catch
         {
             // Ignore any error
         }
         finally
         {
             // Forget
             m_ServiceParser = null;
         }
     }
 }
        /// <summary>
        /// Führt die eintreffenden Aufträge aus.
        /// </summary>
        private void WorkerThread(object reset)
        {
            // Always use the configured language
            UserProfile.ApplyLanguage();

            // Use hardware manager
            using (HardwareManager.Open())
            {
                // Device to use
                Hardware device;

                // Try to attach profile
                try
                {
                    // Open it
                    device = HardwareManager.OpenHardware(Profile);

                    // Should reset
                    if ((bool)reset)
                    {
                        device.ResetWakeupDevice();
                    }

                    // Report success
                    ActionDone(null, null);
                }
                catch (Exception e)
                {
                    // Report error
                    ActionDone(e, null);

                    // Did it
                    return;
                }

                // Loop
                for (var lastIdle = DateTime.UtcNow; m_Running;)
                {
                    // Wait for new item to process
                    m_Trigger.WaitOne();

                    // Load operation
                    var operation = m_Operation;

                    // Clear
                    m_Operation = null;

                    // Process
                    if (m_Running)
                    {
                        if (operation != null)
                        {
                            try
                            {
                                // Process
                                var result = operation(device);

                                // See if there is at least one active source with a program guide running
                                var withGuide = Streams.Values.FirstOrDefault(stream => stream.IsProgamGuideActive.GetValueOrDefault(false));

                                // Check for service parser operation
                                if (m_ServiceParser == null)
                                {
                                    // Can be activated it at least one source with active program guide
                                    if (withGuide != null)
                                    {
                                        try
                                        {
                                            // Create
                                            m_ServiceParser = new ServiceParser(Profile, withGuide.Manager.Source);
                                        }
                                        catch
                                        {
                                            // Ignore any error
                                            m_ServiceParser = null;
                                        }
                                    }
                                }
                                else
                                {
                                    // Only allowed if there is at least one source with active program guide
                                    if (withGuide == null)
                                    {
                                        DisableServiceParser();
                                    }
                                }

                                // Done
                                if (!ReferenceEquals(result, DelayedOperationTag))
                                {
                                    ActionDone(null, result);
                                }
                            }
                            catch (Exception e)
                            {
                                // Report
                                ActionDone(e, null);
                            }
                        }
                    }

                    // See if idle processing should be started
                    if (m_Running)
                    {
                        if ((DateTime.UtcNow - lastIdle).TotalSeconds >= 5)
                        {
                            // Run
                            OnIdle(device);

                            // Reset
                            lastIdle = DateTime.UtcNow;
                        }
                    }
                }

                // Reset EPG flag
                EPGProgress = null;

                // Clear EPG list to preserve memory
                m_EPGItems.Clear();

                // Reset PSI scan flag
                using (var scanner = m_Scanner)
                {
                    // Forget all
                    m_ScanProgress = -1;
                    m_Scanner      = null;
                }

                // Just be safe
                try
                {
                    // Final cleanup
                    RemoveAll();
                }
                catch
                {
                    // Ignore any error
                }
            }
        }
Example #10
0
        /// <summary>
        /// Ändert die aktuelle Tonspur.
        /// </summary>
        /// <param name="audio">Name der aktuellen Tonspur gemäß der Senderliste
        /// oder <i>null</i> für die bevorzugte Tonspur.</param>
        /// <returns>Name des aktuellen Senders und der aktuellen Tonspur.</returns>
        public override string SetAudio( string audio )
        {
            // Not possible
            if (null == CurrentSourceConfiguration)
                return (null == CurrentService) ? StationName : CurrentService.Name;

            // Ask favorites for default
            if (string.IsNullOrEmpty( audio ))
                audio = Favorites.GetPreferredAudio();

            // Always remember
            m_LastAudio = audio;

            // Remember if not a service
            if (null == CurrentPortal)
                LocalInfo.LocalAudio = audio;

            // Audio to use
            AudioInformation info = null;

            // Try default
            if (!string.IsNullOrEmpty( audio ))
                info = CurrentSourceConfiguration.AudioTracks.Find( a => 0 == string.Compare( audio, a.ToString(), true ) );

            // Start up
            Activate( info );

            // Enable service parser if we are allowed to to so
            if (!Profile.DisableProgramGuide)
                if (!Profile.GetFilter( CurrentSourceConfiguration.Source ).DisableProgramGuide)
                {
                    // Stop current
                    if (null != ServiceParser)
                        ServiceParser.Disable();

                    // Create new
                    ServiceParser = new ServiceParser( Profile, (null == CurrentPortal) ? CurrentSourceConfiguration.Source : CurrentPortal.Source );
                }

            // Report full name
            return string.Format( "{0} ({1})", (null == CurrentService) ? StationName : CurrentService.Name, (null == info) ? "-" : info.ToString() );
        }
Example #11
0
        /// <summary>
        /// Beendet die Datenübertragung in den DirectShow Graphen und zusätzlich
        /// eine eventuell laufende Aufzeichnung.
        /// </summary>
        /// <param name="pictureOnly">Gesetzt, wenn die Aufzeichnung selbst weiter laufen soll.</param>
        private void StopReceivers( bool pictureOnly )
        {
            // Stop all consumers we registered
            Device.RemoveProgramGuideConsumer( ReceiveEPG );
            Device.SetConsumerState( VideoId, null );
            Device.SetConsumerState( AudioId, null );
            Device.SetConsumerState( TextId, null );

            // Restart videotext caching from scratch
            VideoText.Deactivate( true );

            // Partial mode
            if (pictureOnly)
                return;

            // Stop reader
            using (var reader = m_InfoReader)
            {
                // Forget
                m_InfoReader = null;

                // Enforce proper shutdown
                if (reader != null)
                    reader.Cancel();
            }

            // Reset flag
            m_HasPendingGroupInformation = false;

            // Stop portal parser
            if (null != ServiceParser)
            {
                // Stop it
                ServiceParser.Disable();

                // Forget it
                ServiceParser = null;
            }

            // Stop recording, too
            using (SourceStreamsManager recording = RecordingStream)
                RecordingStream = null;
        }
Example #12
0
        /// <summary>
        /// Parses input files and generates output files.
        /// </summary>
        /// <param name="parser">The service parser.</param>
        /// <param name="generator">The code generator.</param>
        /// <param name="settings">The settings.</param>
        /// <returns>The number of updated files.</returns>
        public static int GenerateFiles(ServiceParser parser, CodeGenerator generator, FileGeneratorSettings settings)
        {
            if (parser == null)
            {
                throw new ArgumentNullException(nameof(parser));
            }
            if (generator == null)
            {
                throw new ArgumentNullException(nameof(generator));
            }

            if (settings.InputPath == null)
            {
                throw new ArgumentException("InputPath required.", nameof(settings));
            }
            if (settings.OutputPath == null)
            {
                throw new ArgumentException("OutputPath required.", nameof(settings));
            }

            if (settings.IndentText != null)
            {
                if (!generator.RespectsIndentText)
                {
                    throw new ArgumentException("Generator does not support IndentText setting.");
                }
                generator.IndentText = settings.IndentText;
            }

            if (settings.NewLine != null)
            {
                if (!generator.RespectsNewLine)
                {
                    throw new ArgumentException("Generator does not support NewLine setting.");
                }
                generator.NewLine = settings.NewLine;
            }

            generator.ApplySettings(settings);

            var shouldClean = settings.ShouldClean;

            if (shouldClean && !generator.HasPatternsToClean)
            {
                throw new ArgumentException("Generator does not support ShouldClean setting.");
            }

            ServiceDefinitionText input;

            if (settings.InputPath == "-")
            {
                input = new ServiceDefinitionText("", Console.In.ReadToEnd());
            }
            else
            {
                if (!File.Exists(settings.InputPath))
                {
                    throw new ApplicationException("Input file does not exist: " + settings.InputPath);
                }
                input = new ServiceDefinitionText(Path.GetFileName(settings.InputPath), File.ReadAllText(settings.InputPath));
            }

            var service = parser.ParseDefinition(input);

            if (settings.ExcludeTags != null)
            {
                foreach (var excludeTag in settings.ExcludeTags)
                {
                    service = service.ExcludeTag(excludeTag);
                }
            }

            var output = generator.GenerateOutput(service);

            var filesToWrite   = new List <CodeGenFile>();
            var namesToDelete  = new List <string>();
            var outputIsFile   = false;
            var writeToConsole = false;

            if (generator.SupportsSingleOutput &&
                !settings.OutputPath.EndsWith("/", StringComparison.Ordinal) &&
                !settings.OutputPath.EndsWith("\\", StringComparison.Ordinal) &&
                !Directory.Exists(settings.OutputPath) &&
                output.Files.Count == 1)
            {
                outputIsFile   = true;
                writeToConsole = settings.OutputPath == "-";
            }

            var notQuiet = !settings.IsQuiet && !outputIsFile;

            foreach (var file in output.Files)
            {
                var existingFilePath = outputIsFile ? settings.OutputPath : Path.Combine(settings.OutputPath, file.Name);
                if (File.Exists(existingFilePath))
                {
                    // ignore CR when comparing files
                    string Normalize(string text) => settings.IgnoreNewLines ? text.Replace("\r", "") : text;

                    if (Normalize(file.Text) != Normalize(File.ReadAllText(existingFilePath)))
                    {
                        filesToWrite.Add(file);
                        if (notQuiet)
                        {
                            Console.WriteLine("changed " + file.Name);
                        }
                    }
                }
                else
                {
                    filesToWrite.Add(file);
                    if (notQuiet)
                    {
                        Console.WriteLine("added " + file.Name);
                    }
                }
            }

            if (shouldClean && output.PatternsToClean.Count != 0)
            {
                var directoryInfo = new DirectoryInfo(settings.OutputPath);
                if (directoryInfo.Exists)
                {
                    foreach (var nameMatchingPattern in FindNamesMatchingPatterns(directoryInfo, output.PatternsToClean))
                    {
                        if (output.Files.All(x => x.Name != nameMatchingPattern))
                        {
                            namesToDelete.Add(nameMatchingPattern);
                            if (notQuiet)
                            {
                                Console.WriteLine("removed " + nameMatchingPattern);
                            }
                        }
                    }
                }
            }

            if (!settings.IsDryRun)
            {
                if (!outputIsFile && !Directory.Exists(settings.OutputPath))
                {
                    Directory.CreateDirectory(settings.OutputPath);
                }

                foreach (var fileToWrite in filesToWrite)
                {
                    var outputFilePath = outputIsFile ? settings.OutputPath : Path.Combine(settings.OutputPath, fileToWrite.Name);

                    var outputFileDirectoryPath = Path.GetDirectoryName(outputFilePath);
                    if (outputFileDirectoryPath != null && outputFileDirectoryPath != settings.OutputPath && !Directory.Exists(outputFileDirectoryPath))
                    {
                        Directory.CreateDirectory(outputFileDirectoryPath);
                    }

                    if (writeToConsole)
                    {
                        Console.Write(fileToWrite.Text);
                    }
                    else
                    {
                        File.WriteAllText(outputFilePath, fileToWrite.Text);
                    }
                }

                foreach (var nameToDelete in namesToDelete)
                {
                    File.Delete(Path.Combine(settings.OutputPath, nameToDelete));
                }
            }

            return(filesToWrite.Count + namesToDelete.Count);
        }
 public void ParseFileFContent(string filePath)
 {
     var parser     = new ServiceParser(File.ReadAllText(filePath));
     var descriptor = parser.Parse();
 }