public Task <IBinding> TryCreateAsync(BindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            ParameterInfo  parameter = context.Parameter;
            RedisAttribute attribute = parameter.GetCustomAttribute <RedisAttribute>(inherit: false);

            if (attribute == null)
            {
                return(Task.FromResult <IBinding>(null));
            }

            IArgumentBinding <RedisEntity> argumentBinding = Provider.TryCreate(parameter);

            if (argumentBinding == null)
            {
                throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture,
                                                                  "Can't bind to type '{0}'.", parameter.ParameterType));
            }

            var account = RedisAccount.CreateDbFromConnectionString(_config.ConnectionString);

            IBinding binding = new RedisBinding(parameter.Name, argumentBinding, account, attribute, context, _trace);

            return(Task.FromResult(binding));
        }
 public RedisEntity(RedisAccount account, BindingTemplate channelOrKeyPath, Mode mode, IReadOnlyDictionary<string, object> bindingData)
 {
     Account = account;
     Mode = mode;
     _channelOrKeyPath = channelOrKeyPath;
     _bindingData = bindingData;
 }
 public RedisEntity(RedisAccount account, BindingTemplate channelOrKeyPath, Mode mode, IReadOnlyDictionary <string, object> bindingData)
 {
     Account           = account;
     Mode              = mode;
     _channelOrKeyPath = channelOrKeyPath;
     _bindingData      = bindingData;
 }
 public RedisTriggerBinding(ParameterInfo parameter, RedisAccount account, string channelOrKey, Mode mode, RedisConfiguration config, TraceWriter trace)
 {
     _parameter = parameter;
     _account = account;
     _channelOrKey = channelOrKey;
     _mode = mode;
     _config = config;
     _bindingDataProvider = BindingDataProvider.FromType(parameter.ParameterType);
     _trace = trace;
 }
Beispiel #5
0
 public RedisTriggerBinding(ParameterInfo parameter, RedisAccount account, string channelOrKey, Mode mode, RedisConfiguration config, TraceWriter trace)
 {
     _parameter           = parameter;
     _account             = account;
     _channelOrKey        = channelOrKey;
     _mode                = mode;
     _config              = config;
     _bindingDataProvider = BindingDataProvider.FromType(parameter.ParameterType);
     _trace               = trace;
 }
        public RedisBinding(string parameterName, IArgumentBinding <RedisEntity> argumentBinding,
                            RedisAccount account, RedisAttribute attribute, BindingProviderContext context, TraceWriter trace)
        {
            _parameterName   = parameterName;
            _argumentBinding = argumentBinding;
            _account         = account;
            _attribute       = attribute;
            _mode            = attribute.Mode;

            _channelOrKeyPath = BindingTemplate.FromString(attribute.ChannelOrKey);
            _trace            = trace;
        }
        public RedisBinding(string parameterName, IArgumentBinding<RedisEntity> argumentBinding,
            RedisAccount account, RedisAttribute attribute, BindingProviderContext context, TraceWriter trace)
        {
            _parameterName = parameterName;
            _argumentBinding = argumentBinding;
            _account = account;
            _attribute = attribute;
            _mode = attribute.Mode;

            _channelOrKeyPath = BindingTemplate.FromString(attribute.ChannelOrKey);
            _trace = trace;
        }
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            ParameterInfo         parameter = context.Parameter;
            RedisTriggerAttribute attribute = parameter.GetCustomAttribute <RedisTriggerAttribute>(inherit: false);

            if (attribute == null)
            {
                return(Task.FromResult <ITriggerBinding>(null));
            }

            RedisAccount    account = RedisAccount.CreateDbFromConnectionString(_config.ConnectionString);
            ITriggerBinding binding = new RedisTriggerBinding(parameter, account, attribute.ChannelOrKey, attribute.Mode, _config, _trace);

            return(Task.FromResult(binding));
        }
Beispiel #9
0
        private static void Main(string[] args)
        {
            //ArrayTest();
            //Utility.YHSJ(6);

            //var result = MatchEx.Max(1, 2, 3, 4);
            //WriteLine(result);
            //result = MatchEx.Min(1, 2, 3, 4);
            //WriteLine(result);
            //List<int> array = new List<int>() { 1, 2, 3, 4, 5 };
            //var enumerator = array.GetEnumerator();

            //while (enumerator.MoveNext())
            //{
            //    Console.WriteLine(enumerator.Current);
            //}

            //WriteLine("------------------------");

            //Stack<int> stack = new Stack<int>();
            //stack.Push(1);
            //stack.Push(2);
            //stack.Push(3);
            //stack.Push(4);
            //stack.Push(5);
            //stack.Push(6);
            //var stackEnumerator = stack.GetEnumerator();

            //while (stackEnumerator.MoveNext())
            //{
            //    WriteLine(stackEnumerator.Current);
            //}

            //var test=new MethodOverloads();
            //test.Foo(33);
            //test.Foo("abc");
            //test.Bar(44);
            //ReadLine();

            //var list = new List<int> {1, 2, 3, 4, 5};
            //var list1=list.Where(r => r > 1);

            var list = new List <int>();

            list.Add(true, 1);
            list.Add(false, 2);
            list.Add(true, 3);
            list.Add(true, 4);
            list.Add(false, 5);
            WriteLine(string.Join(",", list));

            return;

            var database = RedisManager.Instance.GetDatabase();
            //database.StringSet("00000000", "123", TimeSpan.FromSeconds(1));
            //WriteLine(database.KeyExists("00000000"));
            //Thread.Sleep(2000);
            //WriteLine(database.KeyExists("00000000"));
            //for (int i = 0; i < 10000; i++)
            //{
            //    database.StringSet($"key{i}",i);
            //}
            var redisAccount = new RedisAccount()
            {
                Name            = "qbadmin11",
                LastOnlineIP    = "127.0.0.1",
                Password        = "******",
                Salt            = "123",
                Ticket          = "345",
                UserDisplayName = "11",
                UserId          = "22"
            };

            Task.Factory.StartNew(() =>
            {
                database.HashSetAsync($"account_{redisAccount.Name}",
                                      new HashEntry[]
                {
                    new HashEntry(nameof(redisAccount.Name), redisAccount.Name),
                    new HashEntry(nameof(redisAccount.LastOnlineIP), redisAccount.LastOnlineIP),
                    new HashEntry(nameof(redisAccount.Password), redisAccount.Password),
                    new HashEntry(nameof(redisAccount.Salt), redisAccount.Salt),
                    new HashEntry(nameof(redisAccount.Ticket), redisAccount.Ticket),
                    new HashEntry(nameof(redisAccount.UserId), redisAccount.UserId),
                    new HashEntry(nameof(redisAccount.UserDisplayName), redisAccount.UserDisplayName),
                }).ConfigureAwait(false);
            });

            //database.HashSet($"account_{redisAccount.Name}",
            //    new HashEntry[]
            //    {
            //        new HashEntry(nameof(redisAccount.Name),redisAccount.Name),
            //        new HashEntry(nameof(redisAccount.LastOnlineIP),redisAccount.LastOnlineIP),
            //        new HashEntry(nameof(redisAccount.Password),redisAccount.Password),
            //        new HashEntry(nameof(redisAccount.Salt),redisAccount.Salt),
            //        new HashEntry(nameof(redisAccount.Ticket),redisAccount.Ticket),
            //        new HashEntry(nameof(redisAccount.UserId),redisAccount.UserId),
            //        new HashEntry(nameof(redisAccount.UserDisplayName),redisAccount.UserDisplayName),
            //    });

            //WriteLine(database.HashGet($"account_{redisAccount.Name}", nameof(redisAccount.Name)));

            var hashlist = database.HashGetAll($"account_{redisAccount.Name}");

            WriteLine($"{nameof(redisAccount.Name)}:{hashlist.FirstOrDefault(c=>c.Name==nameof(redisAccount.Name)).Value}");
            WriteLine($"{nameof(redisAccount.LastOnlineIP)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.LastOnlineIP)).Value}");
            WriteLine($"{nameof(redisAccount.Password)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.Password)).Value}");
            WriteLine($"{nameof(redisAccount.Salt)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.Salt)).Value}");
            WriteLine($"{nameof(redisAccount.Ticket)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.Ticket)).Value}");
            WriteLine($"{nameof(redisAccount.UserId)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.UserId)).Value}");
            WriteLine($"{nameof(redisAccount.UserDisplayName)}:{hashlist.FirstOrDefault(c => c.Name == nameof(redisAccount.UserDisplayName)).Value}");



            //hashlist.ForEach(item =>
            //{
            //    WriteLine(item.Name);
            //    WriteLine(item.Value);
            //});

            //var keys=RedisManager.Server.Keys();
            //keys.ForEach(item => { WriteLine(item); });

            return;

            Permission permission = Permission.Create | Permission.Read | Permission.Update | Permission.Delete;

            WriteLine("1、枚举创建,并赋值");
            WriteLine(permission.ToString()); //Create, Read, Update, Delete
            WriteLine((int)permission);       //15

            permission = (Permission)Enum.Parse(typeof(Permission), "5");
            WriteLine("2、通过数字字符串转换......");
            WriteLine(permission.ToString()); //Create, Update
            WriteLine((int)permission);       //5

            permission = (Permission)Enum.Parse(typeof(Permission), "update,delete,read", true);
            WriteLine("3、通过枚举名称字符串转换......");
            WriteLine(permission.ToString()); //Read, Update, Delete
            WriteLine((int)permission);       //14

            permission = (Permission)7;
            WriteLine("4、直接用数字强制转换......");
            WriteLine(permission.ToString()); //Create, Read, Update
            WriteLine((int)permission);       //7

            permission = permission & ~Permission.Read;
            WriteLine("5、去掉一个枚举项");
            WriteLine(permission.ToString()); //Create, Update
            WriteLine((int)permission);       //5

            permission = permission | Permission.Delete;
            WriteLine("6、加上一个枚举项");
            WriteLine(permission.ToString());                 //Create, Update, Delete
            WriteLine((int)permission);                       //13

            WriteLine(permission.HasFlag(Permission.Delete)); //True

            if (permission.HasFlag(Permission.Delete))
            {
                WriteLine("!!!!!!!!");
            }

            WriteLine(permission.GetHashCode());
            WriteLine(permission.GetTypeCode());

            return;

            string fullPath = @"~\\WebSite1\\Default.aspx";

            Console.WriteLine(fullPath.GetFileName());
            Console.WriteLine(fullPath.GetFileExtension());
            Console.WriteLine(fullPath.GetFileNameWithoutExtension());
            Console.WriteLine(fullPath.GetDirectoryName());

            var myClass = new MyClass();

            Console.WriteLine(nameof(MyClass));
            Console.WriteLine(nameof(myClass));
            Console.WriteLine(nameof(myClass.Name).Trim().ToLower());

            return;

            var properties = new NameValueCollection();

            properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient";


            //设置线程池
            properties["quartz.threadPool.type"]           = "Quartz.Simpl.SimpleThreadPool, Quartz";
            properties["quartz.threadPool.threadCount"]    = "5";
            properties["quartz.threadPool.threadPriority"] = "Normal";

            //远程输出配置
            properties["quartz.scheduler.exporter.type"]        = "Quartz.Simpl.RemotingSchedulerExporter, Quartz";
            properties["quartz.scheduler.exporter.port"]        = "556";
            properties["quartz.scheduler.exporter.bindName"]    = "QuartzScheduler";
            properties["quartz.scheduler.exporter.channelType"] = "tcp";

            var schedulerFactory = new StdSchedulerFactory(properties);
            var scheduler        = schedulerFactory.GetScheduler();

            var job = JobBuilder.Create <PrintMessageJob>()
                      .WithIdentity(nameof(PrintMessageJob), "group1")
                      .Build();

            var trigger = TriggerBuilder.Create()
                          .WithIdentity("myJobTrigger", "group1")
                          .StartNow()
                          .WithCronSchedule("/2 * * ? * *")
                          .Build();

            scheduler.ScheduleJob(job, trigger);
            scheduler.Start();
        }