public void ChangeMode(MamMode mode, string sideKey = null) { Channel.Mode = mode; if (mode == MamMode.Restricted) { Channel.SideKey = sideKey; } }
public Tuple <List <string>, string> Fetch(string root, MamMode mode, string sideKey = null, Action <string> action = null) { var messages = new List <string>(); var nextRoot = root; var lastNextRoot = root; // ReSharper disable NotAccessedVariable var transactionCount = 0; var messageCount = 0; // ReSharper restore NotAccessedVariable while (true) { // Apply channel mode var address = mode != MamMode.Public ? HashHelper.Hash(nextRoot) : nextRoot; var response = Iota.IotaClient.FindTransactionsByAddresses(address); if (response.Hashes.Count == 0) { break; } transactionCount += response.Hashes.Count; messageCount++; var messagesGen = TransactionsToMessages(response.Hashes); foreach (var payload in messagesGen) { try { var unmaskedMessage = DecodeMessage(payload, sideKey, nextRoot); var message = unmaskedMessage.Item1; lastNextRoot = unmaskedMessage.Item2; if (action != null) { action.Invoke(message); } else { messages.Add(message); } } catch (System.Exception e) { Console.WriteLine(e); } } nextRoot = lastNextRoot; } return(new Tuple <List <string>, string>(messages, nextRoot)); }