public static IRecordedMessage <TType> SetMessageType <TType>(this IRecordedMessage message) where TType : class { if (message is INamespaceScopedTopicMessage <IRecordedMessage> namespaceScopedMessage) { var innerMessage = namespaceScopedMessage.InnerMessage; var typedMessage = new RecordedMessage <TType>(innerMessage); return(NamespaceScopedRecordedMessage.Create(typedMessage, namespaceScopedMessage.NamespacePattern)); } else { return(new RecordedMessage <TType>(message)); } }
public static IRecordedMessage <TType> Create <TType>(IRecordedMessage <TType> recordedMessage, NamespacePattern namespacePattern) { if (recordedMessage == null) { return(null); } if (recordedMessage is INamespaceScopedTopicMessage <IRecordedMessage <TType> > namespaceScopedMessage) { namespacePattern = namespaceScopedMessage.NamespacePattern.Concat(namespacePattern); recordedMessage = namespaceScopedMessage.InnerMessage; } return(new NamespaceScopedRecordedMessageWrapper <TType>(recordedMessage, namespacePattern)); }
public static bool IsInTopic(this IRecordedMessage message, string topicNamePattern) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (RosNameRegex.IsGlobalPattern(topicNamePattern)) { return(IsInGlobalTopic(message, topicNamePattern)); } else { return(IsInRelativeTopic(message, topicNamePattern)); } }
private static bool IsInRelativeTopic(this IRecordedMessage message, string relativeTopicNamePattern, RosNameRegexCache regexCache = null) { var scopedMessage = message as INamespaceScopedTopicMessage <IRecordedMessage>; if (scopedMessage == null) { throw new InvalidRosNamePatternException( "Relative topic name patterns are only supported if messages were filtered by namespace before."); } var globalName = scopedMessage.NamespacePattern + "/" + relativeTopicNamePattern; var regex = regexCache != null ? regexCache.GetOrCreate(globalName) : RosNameRegex.Create(globalName); return(regex.IsMatch(message.Topic)); }
public RosActionCall(IRecordedMessage <ActionGoal> goal, ActionMessagesCollection actionMessages) { _goal = goal ?? throw new ArgumentNullException(nameof(goal)); _actionMessages = actionMessages ?? throw new ArgumentNullException(nameof(actionMessages)); }
public RecordedMessage(IRecordedMessage message) { _innerMessage = message ?? throw new ArgumentNullException(nameof(message)); }
private static bool IsInGlobalTopic(this IRecordedMessage message, string globalTopicNamePattern) { var regex = RosNameRegex.Create(globalTopicNamePattern); return(regex.IsMatch(message.Topic)); }
public static IRecordedMessage <TType> Create <TType>(IRecordedMessage <TType> recordedMessage, string namespaceScope) { return(Create(recordedMessage, new NamespacePattern(namespaceScope))); }