//subscribe to a collection shard (pull) public virtual void Subscribe(SendChannel <T> channel, Task task) { //dependes - list people the need to run next dependents = dependents.Concat(new Task[] { task }).ToArray(); //where to send to stuff outputChannels = outputChannels.Concat(new SendChannel <T>[] { channel }).ToArray(); var tempMessage = new Message <T>(null); //ask current content for that shard //contentes - virtual method each one has to define to create the diff. foreach (var record in Contents()) { //Console.WriteLine("Sending {0}", record); //if all the message is ready to send - fill up all the message in payload if (tempMessage.length == tempMessage.payload.Length) { channel.Send(ref tempMessage); tempMessage.length = 0; } tempMessage.payload[tempMessage.length++] = record; } //send even if the payload is not full... tempMessage.status = MessageStatus.FinalNonEmpty; //send to every single channel channel.Send(ref tempMessage); }
public ActionResult ReSend(SendChannel channel, string nkeys) { string temp = Regex.Replace(nkeys, @"\D", " "); string[] nums = temp.Split(' '); foreach (string k in nums) { if (string.IsNullOrEmpty(k)) { continue; } List <Privacy> plist = db.Privacies.Where(p => p.NucleusKey.Equals(k)).ToList(); foreach (Privacy pp in plist) { pp.SENDCHANEL &= ~channel; if (channel == SendChannel.PFORCERX) { pp.SENDCHANEL &= ~SendChannel.PFORCERX_INVALID; pp.SENDCHANEL &= ~SendChannel.PFORCERX_ONEKEY_DUP; } db.Entry(pp).State = System.Data.Entity.EntityState.Modified; } db.SaveChanges(); } return(RedirectToAction("ReSend"));; }
public override void Subscribe(SendChannel <Weighted <T> > channel, Task task) { source1.Subscribe(channel, task); var negation = new NegationChannel <T>(channel); source2.Subscribe(negation, task); }
/// <summary> /// 根据消息 标题 通道和发送目标发送消息 /// </summary> /// <param name="title"></param> /// <param name="channel"></param> /// <param name="sendtoIds"></param> public void Send(string title, SendChannel channel, params int[] sendtoIds) { JMessage msg = new JMessage { Title = title, SendToIds = sendtoIds, Channel = channel, SenderId = AppManager.Instance.GetCurrentUserId().ToInt() }; _processer.Add(msg); }
public static void Main() { var conn = new RabbitMQConnection("amqp://localhost"); var sendChannel = new SendChannel(conn); int i = 0; while (i++ < 30) { Thread.Sleep(1000); Console.WriteLine(" [x] Sent {0}", i); sendChannel.Send(i, null); } Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); }
private void ProcessNewEvent(Event newEvent) { try { // посылаем событие подписчику SendChannel.SetData(newEvent); } catch (Exception ex) { // что-то произошло при передаче события, но это не повод для прекращения работы Log.Error(ex, "Ошибка передачи события " + newEvent, ex); } finally { lock (_counterLock) { --_activeEventsCount; } } }
public void AddReceiver(SendChannel <S, T> receiver) { this.onListener(receiver); }
public override void Subscribe(SendChannel <Weighted <R> > channel, Task task) { var selectChannel = new SelectManyChannel <T, R>(channel, selector); source1.Subscribe(selectChannel, task); }
public SelectManyChannel(SendChannel <Weighted <R> > channel, Func <T, IEnumerable <R> > s) { baseChannel = channel; selector = s; }
public override void Subscribe(SendChannel <Weighted <T> > channel, Task task) { var whereChannel = new WhereChannel <T>(channel, predicate); source1.Subscribe(whereChannel, task); }
public NegationChannel(SendChannel <Weighted <T> > channel) { baseChannel = channel; }
public override void Subscribe(SendChannel <Weighted <T> > channel, Task task) { source1.Subscribe(channel, task); source2.Subscribe(channel, task); }
public void Register(SendChannel channel, IMessageSender sender) { sendersDict[channel] = sender; }
public SelectChannel(SendChannel <Weighted <R> > channel, Func <T, R> s) { baseChannel = channel; selector = s; }
public void Register(SendChannel channel, IMessageSender sender) { _router.Register(channel, sender); }
public void Send(Message m) => SendChannel.Send(m);
public WhereChannel(SendChannel <Weighted <T> > channel, Func <T, bool> p) { baseChannel = channel; predicate = p; }