Пример #1
0
        private Variant ToPrimitives(List <DirtyInfo> info)
        {
            var vm = GlobalPool <VariantMap> .GetObject();

            var result = Variant.Get(vm);

            vm.IsArray     = true;
            vm.ArrayLength = info.Count;
            for (var i = 0; i < vm.ArrayLength; i++)
            {
                var primitive = Variant.GetMap(new VariantMapHelper {
                    { Defines.RM_SHAREDOBJECTPRIMITIVE_TYPE, info[i].Type }
                });
                switch (info[i].Type)
                {
                case Defines.SOT_SC_UPDATE_DATA_ACK:

                case Defines.SOT_SC_DELETE_DATA:
                    primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD] = Variant.GetList(info[i].PropertyName);
                    break;

                case Defines.SOT_SC_UPDATE_DATA:
                    primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD] = Variant.GetMap(new VariantMapHelper
                    {
                        { info[i].PropertyName, Payload[info[i].PropertyName].Clone() }
                    });
                    break;

                case Defines.SOT_SC_INITIAL_DATA:
                case Defines.SOT_SC_CLEAR_DATA:
                    break;

                default:
                    Logger.ASSERT("Unable to handle primitive type:{0}", info[i].Type);
                    break;
                }
                vm[VariantMap.GetIndexString(i)] = primitive;
            }
            return(result);
        }