Example #1
0
        /// <summary>
        /// Add a dictionary to this Command.You can get This Data with getDic in slave node.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name">Name of this dictionary</param>
        /// <param name="dic">Dictionary Instance</param>
        public void addDic <K, V>(string name, Dictionary <K, V> dic)
        {
            if (name == null)
            {
                return;
            }
            typeCheck(typeof(K));
            typeCheck(typeof(V));

            genericData _data = new genericData();

            _data.keyTypeName   = typeof(K).AssemblyQualifiedName;
            _data.valueTypeName = typeof(V).AssemblyQualifiedName;

            Debug.Log("type1:" + _data.keyTypeName + " type2:" + _data.valueTypeName);

            _data.containerTypeName = "dic";
            var enu = dic.GetEnumerator();

            while (enu.MoveNext())
            {
                _data.valueData.Add(enu.Current.Key);
                _data.valueData.Add(enu.Current.Value);
            }
            _genericMap.Add_overlay(name, _data);
        }
Example #2
0
        public void addStack <T>(string name, Stack <T> stack)
        {
            if (name == null)
            {
                return;
            }
            typeCheck(typeof(T));

            genericData _data = new genericData();

            _data.valueTypeName     = typeof(T).AssemblyQualifiedName;
            _data.containerTypeName = "stack";
            var enu = stack.GetEnumerator();

            while (enu.MoveNext())
            {
                _data.valueData.Add(enu.Current);
            }
            _genericMap.Add_overlay(name, _data);
        }
Example #3
0
        //用于Debug工具中 游览事件信息 为该事件创建快照并保存起来
        static public ClusterCommand createSnapShot(ClusterCommand e)
        {
            if (e != null)
            {
                ClusterCommand newCommand = new ClusterCommand(e.getCommandName());
                var            enu        = e._paraMap.GetEnumerator();
                while (enu.MoveNext())
                {
                    newCommand._paraMap.Add(enu.Current.Key, enu.Current.Value.ToString());
                }

                var collEnu = e._genericMap.GetEnumerator();
                while (collEnu.MoveNext())
                {
                    var ins = new genericData();
                    ins.containerTypeName = collEnu.Current.Value.containerTypeName;
                    ins.keyTypeName       = collEnu.Current.Value.keyTypeName;
                    ins.valueTypeName     = collEnu.Current.Value.valueTypeName;
                    newCommand._genericMap.Add(collEnu.Current.Key, ins);
                }
                return(newCommand);
            }
            return(null);
        }
Example #4
0
        internal void DeserializeGenericData(ref NetworkState.NETWORK_STATE_TYPE state)
        {
            int genCount = BufferedNetworkUtilsClient.ReadInt(ref state);

            for (int i = 0; i < genCount; ++i)
            {
                string      genName           = BufferedNetworkUtilsClient.ReadString(ref state);
                string      keyTypeName       = BufferedNetworkUtilsClient.ReadString(ref state);
                string      valueTypeName     = BufferedNetworkUtilsClient.ReadString(ref state);
                string      containerTypeName = BufferedNetworkUtilsClient.ReadString(ref state);
                System.Type valueType         = System.Type.GetType(valueTypeName);
                System.Type keyType           = System.Type.GetType(keyTypeName);
                genericData _data             = new genericData();
                _data.valueTypeName     = valueTypeName;
                _data.containerTypeName = containerTypeName;
                int valueCount = BufferedNetworkUtilsClient.ReadInt(ref state);

                bool isStringK = false; bool isStringV = false;

                if (valueType != null && valueType.Equals(typeof(string)))
                {
                    isStringV = true;
                }

                if (keyType != null && keyType.Equals(typeof(string)))
                {
                    isStringK = true;
                }

                if (_data.containerTypeName == "dic")
                {
                    for (int j = 0; j < valueCount; j = j + 2)
                    {
                        if (isStringK)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadString(ref state));
                        }
                        else if (keyType.IsEnum)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadInt(ref state));
                        }
                        else
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadStruct(keyType, ref state));
                        }

                        if (isStringV)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadString(ref state));
                        }
                        else if (valueType.IsEnum)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadInt(ref state));
                        }
                        else
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadStruct(valueType, ref state));
                        }
                    }
                }
                else if (_data.containerTypeName == "queue" || _data.containerTypeName == "list" || _data.containerTypeName == "stack")
                {
                    for (int j = 0; j < valueCount; ++j)
                    {
                        if (isStringV)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadString(ref state));
                        }
                        else if (valueType.IsEnum)
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadInt(ref state));
                        }
                        else
                        {
                            _data.valueData.Add(BufferedNetworkUtilsClient.ReadStruct(valueType, ref state));
                        }
                    }
                }
                _genericMap.Add(genName, _data);
            }
        }
Example #5
0
        internal void SerializeGenericData()
        {
            var enu = _genericMap.GetEnumerator();

            BufferedNetworkUtilsServer.SendInt(_genericMap.Count);
            while (enu.MoveNext())
            {
                BufferedNetworkUtilsServer.SendString(enu.Current.Key);
                genericData _data = enu.Current.Value;
                BufferedNetworkUtilsServer.SendString(_data.keyTypeName);
                BufferedNetworkUtilsServer.SendString(_data.valueTypeName);
                BufferedNetworkUtilsServer.SendString(_data.containerTypeName);
                int count = _data.valueData.Count;
                BufferedNetworkUtilsServer.SendInt(count);

                bool        isStringK = false; bool isStringV = false;
                System.Type typeK = System.Type.GetType(_data.keyTypeName);
                System.Type typeV = System.Type.GetType(_data.valueTypeName);

                if (typeV != null && typeV.Equals(typeof(string)))
                {
                    isStringV = true;
                }
                if (typeK != null && typeK.Equals(typeof(string)))
                {
                    isStringK = true;
                }

                if (_data.containerTypeName == "dic")
                {
                    for (int i = 0; i < _data.valueData.Count; i = i + 2)
                    {
                        if (isStringK)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i]);
                        }
                        else if (typeK.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i]);
                        }

                        if (isStringV)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i + 1]);
                        }
                        else if (typeV.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i + 1]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i + 1]);
                        }
                    }
                }
                else if (_data.containerTypeName == "queue" || _data.containerTypeName == "list" || _data.containerTypeName == "stack")
                {
                    for (int i = 0; i < _data.valueData.Count; ++i)
                    {
                        if (isStringV)
                        {
                            BufferedNetworkUtilsServer.SendString((string)_data.valueData[i]);
                        }
                        else if (typeV.IsEnum)
                        {
                            BufferedNetworkUtilsServer.SendInt(System.Convert.ToInt32(_data.valueData[i]));
                        }
                        else
                        {
                            BufferedNetworkUtilsServer.SendStruct(_data.valueData[i]);
                        }
                    }
                }
            }
        }