protected void ProcessPayload(MessageAndOffset messageAndOffset) { using (var stm = new MemoryStream(messageAndOffset.Message.Payload, false)) { stm.Position = 0; var msg = Formatter.Deserialize(stm); ChainHandler.ProcessMessage((IMessage)msg); } }
private TData MakeNext() { if (current == null || !current.MoveNext()) { Logger.Debug("Getting new FetchedDataChunk..."); if (consumerTimeoutMs < 0) { currentDataChunk = this.channel.Take(cancellationToken); } else { bool done = channel.TryTake(out currentDataChunk, consumerTimeoutMs, cancellationToken); if (!done) { Logger.Debug("Consumer iterator timing out..."); state = ConsumerIteratorState.NotReady; throw new ConsumerTimeoutException(); } } if (currentDataChunk.Equals(ZookeeperConsumerConnector.ShutdownCommand)) { Logger.Debug("Received the shutdown command"); channel.Add(currentDataChunk); return(this.AllDone()); } currentTopicInfo = currentDataChunk.TopicInfo; Logger.DebugFormat("CurrentTopicInfo: ConsumedOffset({0}), FetchOffset({1})", currentTopicInfo.ConsumeOffset, currentTopicInfo.FetchOffset); if (currentTopicInfo.FetchOffset < currentDataChunk.FetchOffset) { Logger.ErrorFormat("consumed offset: {0} doesn't match fetch offset: {1} for {2}; consumer may lose data", currentTopicInfo.ConsumeOffset, currentDataChunk.FetchOffset, currentTopicInfo); currentTopicInfo.ConsumeOffset = currentDataChunk.FetchOffset; } current = currentDataChunk.Messages.GetEnumerator(); current.MoveNext(); } MessageAndOffset item = current.Current; consumedOffset = item.MessageOffset; return(this.decoder.ToEvent(item.Message)); }
protected bool Equals(MessageAndOffset other) { return Equals(this.Message, other.Message) && this.Offset == other.Offset; }
protected bool Equals(MessageAndOffset other) { return(Equals(this.Message, other.Message) && this.Offset == other.Offset); }