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); }
private NetMQMessage OnReceived(NetMQMessage request) { var ret = new NetMQMessage(); var selector = request.Pop(); try { switch (selector.ConvertToString()) { case "AddEntry": { var entries = request.UnpackMessageList <FuzzyWordEntry>(FuzzyWordEntry.Parser.ParseDelimitedFrom); var methodResult = AddEntry(entries); ret.Append(methodResult); break; } case "FuzzyQuery": { var phrases = request.UnpackMessageList <FuzzyCheck>(FuzzyCheck.Parser.ParseDelimitedFrom); var methodResult = FuzzyQuery(phrases); ret.PackMessageList <FuzzyQueryResponse>(methodResult);; break; } default: throw new Exception($"Unexpected selector - {selector}"); } } catch (Exception e) { L.Trace($"{selector} caused an exception"); L.Exception(e); ret.AppendEmptyFrame(); ret.Append($"{selector} caused an exception - '{e.Message}' check server logs for more details"); } 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); }
private NetMQMessage OnReceived(NetMQMessage request) { var ret = new NetMQMessage(); var selector = request.Pop(); try { switch (selector.ConvertToString()) { case "StoreParties": { var parties = request.UnpackMessageList <Party>(Party.Parser.ParseDelimitedFrom); var methodResult = StoreParties(parties); ret.Append(methodResult); break; } case "StoreAccounts": { var accounts = request.UnpackMessageList <Account>(Account.Parser.ParseDelimitedFrom); var methodResult = StoreAccounts(accounts); ret.Append(methodResult); break; } case "StoreTransactions": { var transactions = request.UnpackMessageList <Transaction>(Transaction.Parser.ParseDelimitedFrom); var methodResult = StoreTransactions(transactions); ret.Append(methodResult); break; } case "StoreLinkages": { var mappings = request.UnpackMessageList <AccountToParty>(AccountToParty.Parser.ParseDelimitedFrom); var direction = (LinkageDirection)Enum.Parse(typeof(LinkageDirection), request.Pop().ConvertToString()); var methodResult = StoreLinkages(mappings, direction); ret.Append(methodResult); break; } case "GetLinkages": { var source = request.UnpackMessageList <Identifier>(Identifier.Parser.ParseDelimitedFrom); var direction = (LinkageDirection)Enum.Parse(typeof(LinkageDirection), request.Pop().ConvertToString()); var methodResult = GetLinkages(source, direction); ret.PackMessageList <AccountToParty>(methodResult);; break; } case "AccountsExist": { var account = request.UnpackMessageList <Identifier>(Identifier.Parser.ParseDelimitedFrom); var methodResult = AccountsExist(account); ret.PackMessageList <YesNo>(methodResult);; break; } case "RunQuery": { var query = request.UnpackMessage <GraphQuery>(GraphQuery.Parser.ParseFrom); var methodResult = RunQuery(query); ret.PackMessage <GraphResponse>(methodResult);; break; } default: throw new Exception($"Unexpected selector - {selector}"); } } catch (Exception e) { L.Trace($"{selector} caused an exception"); L.Exception(e); ret.AppendEmptyFrame(); ret.Append($"{selector} caused an exception - '{e.Message}' check server logs for more details"); } return(ret); }