public override IWampRpcOperation GetMatchingOperation(string criteria)
        {
            string[] uriParts = criteria.Split('.');

            // Finds the first wildcard that can match the criteria.
            // TODO: change the implementation to the "most selective wildcard",
            // TODO: when this is finally defined.
            foreach (var wildcardToEvaluator in mWildCardToEvaluator)
            {
                string          wildcard  = wildcardToEvaluator.Key;
                WildCardMatcher evaluator = wildcardToEvaluator.Value;

                if (evaluator.IsMatched(uriParts))
                {
                    return(GetOperationByUri(wildcard));
                }
            }

            return(null);
        }
Пример #2
0
        public override IEnumerable <IWampTopic> GetMatchingTopics(string criteria, PublishOptions publishOptions)
        {
            string[] uriParts = criteria.Split('.');

            foreach (var wildcardToEvaluator in mWildCardToEvaluator)
            {
                string          wildcard  = wildcardToEvaluator.Key;
                WildCardMatcher evaluator = wildcardToEvaluator.Value;

                if (evaluator.IsMatched(uriParts))
                {
                    IWampTopic topic = GetTopicByUri(wildcard);

                    if (topic != null)
                    {
                        yield return(topic);
                    }
                }
            }
        }
Пример #3
0
        public void should_match_quesiton_mark_as_single_character(string s, bool expectedResult)
        {
            var wildCardMatcher = new WildCardMatcher("pass?");

            Assert.Equal(expectedResult, wildCardMatcher.Match(s));
        }
Пример #4
0
        public void should_ignore_case_when_set_ignore_case()
        {
            var wildCardMatcher = new WildCardMatcher("pass*", RegexOptions.IgnoreCase);

            Assert.True(wildCardMatcher.Match("Pass"));
        }
Пример #5
0
        public void should_match_star_wild_card(string s, bool expectedResult)
        {
            var wildCardMatcher = new WildCardMatcher("pass*");

            Assert.Equal(expectedResult, wildCardMatcher.Match(s));
        }
Пример #6
0
        private void OnTopicCreated(object sender, WampTopicCreatedEventArgs e)
        {
            string wildcard = e.Topic.TopicUri;

            mWildCardToEvaluator[wildcard] = new WildCardMatcher(wildcard);
        }
Пример #7
0
        public static int command_send(Hashtable parameters)
        {
            displayTitle();

            parameters.Remove("command");

            String server = (String)parameters["server"];

            parameters.Remove("server");
            if (server == null)
            {
                server = RICS_SERVER;
            }

            String service = (String)parameters["service"];

            parameters.Remove("service");
            if (service == null)
            {
                Console.WriteLine("parameter -service is missing");
                Environment.Exit(1);
            }
            service = service.ToUpper();
            String user = (String)parameters["user"];

            parameters.Remove("user");
            if (user == null)
            {
                Console.WriteLine("parameter -user is missing");
                Environment.Exit(1);
            }
            String file_pattern = (String)parameters["file"];

            parameters.Remove("file");
            if (file_pattern == null)
            {
                Console.WriteLine("parameter -file is missing");
                Environment.Exit(1);
            }

            // extract directory
            String directory;
            int    ind = file_pattern.LastIndexOf(fileSeparator);

            if (ind >= 0)
            {
                // extract directory from pattern
                directory    = file_pattern.Substring(0, ind);
                file_pattern = file_pattern.Substring(ind + 1);
            }
            else
            {
                // active directory
                directory = ".";
            }
            string[] files = Directory.GetFiles(directory).Select(file => Path.GetFileName(file)).ToArray();

            if (files.Length == 0)
            {
                Console.WriteLine("no files in directory: " + directory + " found.");
                Environment.Exit(1);
            }

            // prepare wildcard matcher
            WildCardMatcher wm = new WildCardMatcher(file_pattern);

            int status = 0;

            for (int i = 0; i < files.Length; i++)
            {
                String fname = files[i];
                if (!wm.matches(fname))
                {
                    continue;
                }

                Console.WriteLine("sending " + fname + " to service " + service + " ...");

                string fullFilePath = Path.Combine(directory, fname);
                if (sendFile(server, service, user, fullFilePath, parameters))
                {
                    Console.WriteLine("done.");
                }
                else
                {
                    Console.WriteLine("not done.");
                    status = 1;
                }
                Console.WriteLine("");
            }

            return(status);
        }