Пример #1
0
        public IEnumerable <Y> SendEnumerableListResult <T, Y>(string function, Func <Stream, Y> transform, IEnumerable <T> lst,
                                                               params object[] param) where T : IMessage where Y : IMessage
        {
            List <Y> ret = new List <Y>();  // be careful changing this to 'yield return' because causes threading issues ...

            L.Trace($"SendEnumerable - {Thread.CurrentThread.ManagedThreadId}");
            foreach (var c in lst.Chunk(100000))
            {
                var msg = new NetMQMessage();
                msg.Append(function);

                msg.PackMessageList <T>(c);
                foreach (var z in param)
                {
                    msg.AddParameter(z);
                }
                L.Trace($"About to actually send- {Thread.CurrentThread.ManagedThreadId}");
                var result = Send(msg);
                if (result.First.IsEmpty)
                {
                    throw new Exception(result[1].ConvertToString());
                }
                foreach (var obj in result.UnpackMessageList(transform))
                {
                    ret.Add(obj);
                }
            }
            return(ret);
        }
Пример #2
0
        public Int32 SendEnumerableIntResult <T>(string function, IEnumerable <T> lst, params Object[] param) where T : IMessage
        {
            int t = 0;

            foreach (var c in lst.Chunk(100000))
            {
                var msg = new NetMQMessage();
                msg.Append(function);

                msg.PackMessageList <T>(c);
                foreach (var z in param)
                {
                    msg.AddParameter(z);
                }
                var ret = Send(msg);
                if (ret.First.IsEmpty)
                {
                    throw new Exception(ret[1].ConvertToString());
                }
                t += ret.First.ConvertToInt32();
            }
            return(t);
        }