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); }
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); }