public override System.ServiceModel.Channels.Message Receive(TimeSpan timeout) { _session.messageFlow("myDest", MessageCreditUnit.MESSAGE, 1); _session.sync(); IMessage m = _queue.Dequeue(); System.ServiceModel.Channels.Message result = null; if (m != null) { var reader = new BinaryReader(m.Body, Encoding.UTF8); var body = new byte[m.Body.Length - m.Body.Position]; reader.Read(body, 0, body.Length); try { result = _encoder.ReadMessage(new MemoryStream(body), (int)_bindingElement.MaxReceivedMessageSize); } catch (Exception e) { Console.WriteLine(e.StackTrace); } result.Headers.To = LocalAddress.Uri; var ack = new RangeSet(); // ack this message ack.add(m.Id); _session.messageAccept(ack); _session.sync(); } else { if (!_closed) { return(Receive(timeout)); } } return(result); }
public override System.ServiceModel.Channels.Message Receive(TimeSpan timeout) { _session.messageFlow("myDest", MessageCreditUnit.MESSAGE, 1); _session.sync(); IMessage m = _queue.Dequeue(); System.ServiceModel.Channels.Message result = null; if (m != null) { var reader = new BinaryReader(m.Body, Encoding.UTF8); var body = new byte[m.Body.Length - m.Body.Position]; reader.Read(body, 0, body.Length); try { result = _encoder.ReadMessage(new MemoryStream(body), (int) _bindingElement.MaxReceivedMessageSize); } catch(Exception e) { Console.WriteLine(e.StackTrace); } result.Headers.To = LocalAddress.Uri; var ack = new RangeSet(); // ack this message ack.add(m.Id); _session.messageAccept(ack); _session.sync(); } else { if(! _closed ) { return Receive(timeout); } } return result; }