示例#1
0
        public IEnumerable <IDataObject> GetListOf(IZetboxContext ctx, InterfaceType ifType, int ID, string property, out List <IStreamable> auxObjects)
        {
            List <IStreamable> tmpAuxObjects = null;
            int resultCount = 0;
            var _ifType     = ifType.ToSerializableType();
            var ticks       = _perfCounter.IncrementGetListOf(ifType);

            try
            {
                byte[] bytes = null;

                MakeRequest(() =>
                {
                    bytes = _service.GetListOf(ZetboxGeneratedVersionAttribute.Current, _ifType, ID, property);
                });

                IEnumerable <IDataObject> result = null;
                using (var sr = _readerFactory(new BinaryReader(new MemoryStream(bytes))))
                {
                    result = ReceiveObjects(ctx, sr, out tmpAuxObjects).Cast <IDataObject>();
                }
                resultCount = result.Count();

                auxObjects = tmpAuxObjects;
                return(result);
            }
            finally
            {
                _perfCounter.DecrementGetListOf(ifType, resultCount, ticks);
            }
        }
示例#2
0
        public byte[] GetListOf(Guid version, SerializableType type, int ID, string property)
        {
            using (Logging.Facade.DebugTraceMethodCallFormat("GetListOf", "type={0}", type))
            {
                DebugLogIdentity();
                try
                {
                    if (type == null)
                    {
                        throw new ArgumentNullException("type");
                    }

                    using (var ctx = _ctxFactory())
                    {
                        var ifType      = _iftFactory(type.GetSystemType());
                        int resultCount = 0;
                        var ticks       = _perfCounter.IncrementGetListOf(ifType);
                        try
                        {
                            IEnumerable <IStreamable> lst = _sohFactory
                                                            .GetServerObjectHandler(ifType)
                                                            .GetListOf(version, ctx, ID, property);
                            resultCount = lst.Count();
                            return(SendObjects(lst, false /*true*/).ToArray());
                        }
                        finally
                        {
                            _perfCounter.DecrementGetListOf(ifType, resultCount, ticks);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Helper.ThrowFaultException(ex);
                    // Never called, Handle errors throws an Exception
                    return(null);
                }
            }
        }