コード例 #1
0
        public static String GetSanitizedName(String fullName)
        {
            const Int32   maxLength        = 51;
            StringBuilder sanitizedBuilder = fullName.Aggregate(new StringBuilder(),
                                                                (SB, c) => isAllowedCharacter(c)
                                                     ? SB.Append(c)
                                                     : SB.Append('!').Append(((Int32)c).ToString("x4")));

            String sanitizedString = sanitizedBuilder.ToString();

            if (sanitizedString.Length <= maxLength)
            {
                return(sanitizedString);
            }

            String testForIncompleteSequence = sanitizedString.Substring(maxLength - 4, 4);
            Int32  i             = testForIncompleteSequence.IndexOf('!');
            Int32  splitPosition = i < 0
                ? maxLength
                : maxLength - 4 + i;
            String exceeded  = sanitizedString.Substring(splitPosition);
            String truncated = sanitizedString.Remove(splitPosition);

            return(truncated + "-" + getExceedHash(exceeded));
        }
コード例 #2
0
        //---------------------------------------------------------------------
        // 初始化MasteSlave
        async Task IGrainDCache.initMasteSlave(string maste_name)
        {
            var  grain_master = this.GrainFactory.GetGrain <IGrainDCacheMaster>(maste_name);
            bool is_inited    = await grain_master.GetIfInit();

            if (is_inited)
            {
                return;
            }

            grain_master.Init();
            grain_master.setup(maste_name, DCacheMasterSlaveMaxDeep, DCacheMasterSlaveCount);

            for (int i = 1; i <= DCacheMasterSlaveCount; i++)
            {
                SB.Clear();
                SB.Append(maste_name);
                SB.Append("_");
                SB.Append(SLAVE_MAP_NAME);
                SB.Append("_");
                SB.Append(SLAVE_ROOT_DEEP);
                SB.Append("_");
                SB.Append(i);
                var grain_slave = this.GrainFactory.GetGrain <IGrainDCacheSlave>(SB.ToString());
                grain_slave.setup(maste_name, SLAVE_ROOT_DEEP, DCacheMasterSlaveMaxDeep, DCacheMasterSlaveCount);
            }
        }
コード例 #3
0
        //---------------------------------------------------------------------
        // Count Cache
        async Task <int> IGrainDCacheMapCounter.countMap()
        {
            ListCountTask.Clear();

            for (int i = 1; i <= MapCount; i++)
            {
                SB.Clear();
                SB.Append(KeyTitle);
                SB.Append("_");
                SB.Append(i);
                var grain_map = this.GrainFactory.GetGrain <IGrainDCacheMap>(SB.ToString());
                ListCountTask.Add(grain_map.getMapCount());
            }

            await Task.WhenAll(ListCountTask);

            MapCacheDataCount = 0;
            foreach (var i in ListCountTask)
            {
                if (i.IsCompleted)
                {
                    MapCacheDataCount += ((Task <int>)i).Result;
                }
            }

            ListCountTask.Clear();

            return(MapCacheDataCount);
        }
コード例 #4
0
        private void GerarMetodos(Service service)
        {
            foreach (var metodo in service.Metodos)
            {
                SB.Append($"\t{metodo.Nome} = (");

                for (var i = 0; i < metodo.Parametros.Count; i++)
                {
                    var param = metodo.Parametros[i];
                    SB.Append($"{param.Nome}: {param.Tipo}");

                    if (i + 1 < metodo.Parametros.Count)
                    {
                        SB.Append(", ");
                    }
                }

                SB.AppendLine(") =>");

                var rota = metodo.Rota.Replace("[action]", metodo.Nome);

                SB.Append($"\t\tthis.CreateRequest<{metodo.Retorno}>(RequestType.{metodo.Tipo}, `{rota}`");

                var bodyParams = metodo.Parametros.Where(x => !x.IsQueryString).ToList();
                if (bodyParams.Count > 0)
                {
                    SB.Append($", ");

                    if (bodyParams.Count == 1)
                    {
                        SB.Append(metodo.Parametros[0].Nome);
                    }
                    else
                    {
                        SB.Append("{ ");
                        for (var i = 0; i < bodyParams.Count; i++)
                        {
                            SB.Append(bodyParams[i].Nome);
                            if (i + 1 < bodyParams.Count)
                            {
                                SB.Append(", ");
                            }
                        }
                        SB.Append("}");
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(metodo.Resposta) && metodo.Resposta != TipoResposta.Normal.ToDescriptionString())
                    {
                        SB.Append($", null, ResponseType.{metodo.Resposta}");
                    }
                }

                SB.AppendLine(");");
                SB.AppendLine();
            }
        }
コード例 #5
0
        //---------------------------------------------------------------------
        // Count 所有MapCache
        async Task <int> IGrainDCache.countMap(string map_name)
        {
            SB.Clear();
            SB.Append(map_name);
            SB.Append("_");
            SB.Append(DCACHEMAP_COUNTER_TITLE);
            var grain_mapcounter = this.GrainFactory.GetGrain <IGrainDCacheMapCounter>(SB.ToString());
            int count            = await grain_mapcounter.countMap();

            return(count);
        }
コード例 #6
0
        //---------------------------------------------------------------------
        public string AppendStrWithSB(params string[] strs)
        {
            ClearSB();

            foreach (var i in strs)
            {
                SB.Append(i);
            }

            return(SB.ToString());
        }
コード例 #7
0
 private void AddRecipeLinks(IRecipe[] recipes)
 {
     SB.Append("<div style='margin-left: 1em;'>");
     foreach (IRecipe recipe in recipes)
     {
         string categoryPageName = $"{Sanitize(recipe.Category)}{ExtPage}";
         string recipeUrl        = $"{categoryPageName}#{recipe.ID}".ToLower();
         SB.AppendLine($"<p><a href='{recipeUrl}' style='font-weight: 600;'>{recipe.Title}</a> - {recipe.Description}</p>");
     }
     SB.Append("</div>");
 }
コード例 #8
0
        public void Scan()
        {
            char c = C();

            SB.Append(c);
            Queue.Enqueue(c);

            if (Queue.Count > Length)
            {
                Queue.Dequeue();
            }
        }
コード例 #9
0
        //---------------------------------------------------------------------
        // 从Map中随机获取数据
        async Task <List <byte[]> > IGrainDCache.getFromMapRandom(string map_name, int count)
        {
            int map_index = Random.Next(1, DCacheMapCount + 1);

            SB.Clear();
            SB.Append(map_name);
            SB.Append("_");
            SB.Append(map_index);

            var grain_map  = this.GrainFactory.GetGrain <IGrainDCacheMap>(SB.ToString());
            var list_value = await grain_map.getFromMapRandom(count);

            return(list_value);
        }
コード例 #10
0
        //---------------------------------------------------------------------
        // add数据到Map中
        async Task <string> IGrainDCache.addToMap(string map_name, string ticket, string key, byte[] value)
        {
            if (string.IsNullOrEmpty(ticket))
            {
                int map_index = Random.Next(1, DCacheMapCount + 1);
                SB.Clear();
                SB.Append(map_name);
                SB.Append("_");
                SB.Append(map_index);
                ticket = SB.ToString();
            }

            var grain_map = this.GrainFactory.GetGrain <IGrainDCacheMap>(ticket);
            var tick      = await grain_map.addToMap(key, value);

            return(tick);
        }
コード例 #11
0
        //---------------------------------------------------------------------
        // 从MasteSlave中获取数据
        async Task <byte[]> IGrainDCache.getFromMasteSlave(string maste_name, string key)
        {
            int slave_count = (int)Math.Pow(DCacheMasterSlaveCount, DCacheMasterSlaveMaxDeep - 1);
            int slave_index = Random.Next(1, slave_count + 1);

            SB.Clear();
            SB.Append(maste_name);
            SB.Append("_");
            SB.Append(SLAVE_MAP_NAME);
            SB.Append("_");
            SB.Append(DCacheMasterSlaveMaxDeep);
            SB.Append("_");
            SB.Append(slave_index);
            var grain_slave = this.GrainFactory.GetGrain <IGrainDCacheSlave>(SB.ToString());
            var result      = await grain_slave.getFromSlave(key);

            return(result);
        }
コード例 #12
0
        //---------------------------------------------------------------------
        // add数据到MasteSlave中
        Task IGrainDCacheMaster.addToMasteSlave(string key, byte[] value)
        {
            MapCache[key] = value;

            for (int i = 1; i <= SlaveCount; i++)
            {
                SB.Clear();
                SB.Append(MasterName);
                SB.Append("_");
                SB.Append(GrainDCache.SLAVE_MAP_NAME);
                SB.Append("_");
                SB.Append(GrainDCache.SLAVE_ROOT_DEEP);
                SB.Append("_");
                SB.Append(i);
                var grain_slave = this.GrainFactory.GetGrain <IGrainDCacheSlave>(SB.ToString());
                grain_slave.addToSlave(key, value);
            }

            return(TaskDone.Done);
        }
コード例 #13
0
ファイル: Form1.cs プロジェクト: haondt/Licensing-Server
        /// <summary>
        /// Verify HWID matches license key
        /// </summary>
        /// <param name="HWID"></param>
        /// <param name="licenseKey"></param>
        /// <returns></returns>
        private bool verifyHWID(string HWID, string licenseKey)
        {
            // Seperate first 8 digits as HWID
            string KeyHWIDHash = licenseKey.Split('-')[0] + licenseKey.Split('-')[1];

            // Get hash of hwid
            string HWIDHash;

            using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
            {
                // Split HWID into bytes
                byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(HWID);

                // Hash bytes
                byte[] hashBytes = md5.ComputeHash(inputBytes);

                // Convert to hexidecimal string
                HWIDHash = hashBytes.Aggregate(new StringBuilder(), (SB, hb) => SB.Append(hb.ToString("x2"))).ToString();
            }

            // convert hexidecimal hash to integer
            BigInteger HWIDHashInt = BigInteger.Parse(HWIDHash, System.Globalization.NumberStyles.HexNumber);

            // mod integer to 8 hex digits
            HWIDHashInt = (BigInteger)(HWIDHashInt % (BigInteger)(Math.Pow(2, 4 * 8)));

            // convert int back to hex
            HWIDHash = HWIDHashInt.ToString("X");

            // trim leading characters
            while (HWIDHash.Length > 8)
            {
                HWIDHash = HWIDHash.Substring(1);
            }

            // Return hash equivalency
            return(HWIDHash.CompareTo(KeyHWIDHash) == 0);
        }
コード例 #14
0
        //---------------------------------------------------------------------
        // remove数据
        Task IGrainDCacheMaster.removeFromMasteSlave(string key)
        {
            if (MapCache.ContainsKey(key))
            {
                MapCache.Remove(key);
            }

            for (int i = 1; i <= SlaveCount; i++)
            {
                SB.Clear();
                SB.Append(MasterName);
                SB.Append("_");
                SB.Append(GrainDCache.SLAVE_MAP_NAME);
                SB.Append("_");
                SB.Append(GrainDCache.SLAVE_ROOT_DEEP);
                SB.Append("_");
                SB.Append(i);
                var grain_slave = this.GrainFactory.GetGrain <IGrainDCacheSlave>(SB.ToString());
                grain_slave.removeFromSlave(key);
            }

            return(TaskDone.Done);
        }
コード例 #15
0
        //---------------------------------------------------------------------
        // 初始化Map
        async Task IGrainDCache.initMap(string map_name)
        {
            int count = DCacheMapCount;

            int map_index = Random.Next(1, count + 1);

            SB.Clear();
            SB.Append(map_name);
            SB.Append("_");
            SB.Append(map_index);

            var grain_maprandom = this.GrainFactory.GetGrain <IGrainDCacheMap>(SB.ToString());
            var is_inited       = await grain_maprandom.GetIfInit();

            if (is_inited)
            {
                return;
            }

            SB.Clear();
            SB.Append(map_name);
            SB.Append("_");
            SB.Append(DCACHEMAP_COUNTER_TITLE);
            var grain_mapcounter = this.GrainFactory.GetGrain <IGrainDCacheMapCounter>(SB.ToString());

            grain_mapcounter.setup(map_name, count);

            for (int i = 1; i <= count; i++)
            {
                SB.Clear();
                SB.Append(map_name);
                SB.Append("_");
                SB.Append(i);
                var grain_map = this.GrainFactory.GetGrain <IGrainDCacheMap>(SB.ToString());
                grain_map.setup();
            }
        }
コード例 #16
0
ファイル: Les3PrettyPrinter.cs プロジェクト: dadhi/ecsharp
 protected override void StartToken(LesColorCode kind)
 {
     SB.Append((char)kind);
 }
コード例 #17
0
 public GremlinScript Append(string Script)
 {
     SB.Append(Script);
     return(this);
 }