/// <summary>sends COMPARATOR command</summary> /// <remarks>valid in authenticated/selected state</remarks> public ImapCommandResult Comparator(out ImapCollationAlgorithm activeComparator) { /* * RFC 5255 - Internet Message Access Protocol Internationalization * http://tools.ietf.org/html/rfc5255 * 4.7. COMPARATOR Command * When issued with no arguments, it results in a * COMPARATOR response indicating the currently active comparator. */ activeComparator = null; using (var t = new ComparatorTransaction(connection)) { if (ProcessTransaction(t).Succeeded) { this.activeComparator = t.Result.Value.Item1; activeComparator = t.Result.Value.Item1; } return t.Result; } }
/// <summary>sends COMPARATOR command</summary> /// <remarks>valid in authenticated/selected state</remarks> public ImapCommandResult Comparator(out ImapCollationAlgorithm[] matchingComparators, ImapCollationAlgorithm comparator, params ImapCollationAlgorithm[] comparators) { ImapCollationAlgorithm discard; return Comparator(out discard, out matchingComparators, comparator, comparators); }
/// <summary>sends COMPARATOR command</summary> /// <remarks>valid in authenticated/selected state</remarks> public ImapCommandResult Comparator(out ImapCollationAlgorithm activeComparator, out ImapCollationAlgorithm[] matchingComparators, ImapCollationAlgorithm comparator, params ImapCollationAlgorithm[] comparators) { RejectNonAuthenticatedState(); if (comparator == null) throw new ArgumentNullException("comparator"); var comparatorArguments = new List<ImapCollationAlgorithm>(); comparatorArguments.Add(comparator); if (comparators != null) { for (var i = 0; i < comparators.Length; i++) { if (comparators[i] == null) throw new ArgumentNullException(string.Format("comparators[{0}]", i)); comparatorArguments.Add(comparators[i]); } } activeComparator = null; matchingComparators = null; /* * RFC 5255 - Internet Message Access Protocol Internationalization * http://tools.ietf.org/html/rfc5255 * 4.7. COMPARATOR Command * When issued with one or more comparator arguments, it changes the * active comparator as directed. */ using (var t = new ComparatorTransaction(connection)) { t.RequestArguments["comparator order arguments"] = new ImapStringList(comparatorArguments.ConvertAll(delegate(ImapCollationAlgorithm comp) { return new ImapQuotedString(comp.ToString()); }).ToArray()); if (ProcessTransaction(t).Succeeded) { this.activeComparator = t.Result.Value.Item1; activeComparator = t.Result.Value.Item1; matchingComparators = t.Result.Value.Item2 ?? new ImapCollationAlgorithm[0]; } return t.Result; } }
/// <summary>sends COMPARATOR command</summary> /// <remarks>valid in authenticated/selected state</remarks> public ImapCommandResult Comparator(ImapCollationAlgorithm comparator, params ImapCollationAlgorithm[] comparators) { ImapCollationAlgorithm discard1; ImapCollationAlgorithm[] discard2; return Comparator(out discard1, out discard2, comparator, comparators); }