public RvCertifiedMultiSubjectMessaging(Rv.CMTransport transport, Uri address) : base(address) { if (transport == null) { throw new ArgumentNullException(nameof(transport)); } _transport = transport; }
public bool TryCreateMultiSubject(Uri address, out IMultiSubjectMessaging subscriptionGroup) { if (!address.Scheme.IsRvScheme()) { subscriptionGroup = null; return(false); } var service = address.Host; var config = GetConfig(service); var netTrans = new Rv.NetTransport(service, config.Network, config.Daemon); switch (address.Scheme) { case "rv+cm": if (string.IsNullOrEmpty(config.CmName)) { ThrowCmNameNotConfigured(); } var cmt = new Rv.CMTransport(netTrans); //TODO: what about ledger files? subscriptionGroup = new RvMultiSubjectMessaging(cmt, address); break; case "rv+dq": if (string.IsNullOrEmpty(config.CmName)) { ThrowCmNameNotConfigured(); } var dqt = new Rv.CMQueueTransport(netTrans, config.CmName); //TODO: other queue parameters need configuring subscriptionGroup = new RvMultiSubjectMessaging(dqt, address); break; default: subscriptionGroup = new RvMultiSubjectMessaging(netTrans, address); break; } return(true); }