@@ -109,6 +109,8 @@ pub enum EnvelopeItem {
109109 Attachment ( Attachment ) ,
110110 /// A Profile Item.
111111 Profile ( SampleProfile ) ,
112+ /// This is a sentinel item used to `filter` raw envelopes.
113+ Raw ,
112114 // TODO:
113115 // etc…
114116}
@@ -213,12 +215,15 @@ impl Envelope {
213215 where
214216 I : Into < EnvelopeItem > ,
215217 {
218+ let item = item. into ( ) ;
219+
216220 let Items :: EnvelopeItems ( ref mut items) = self . items else {
217- eprintln ! ( "WARNING: This envelope contains raw items. Adding an item is not supported." ) ;
221+ if item != EnvelopeItem :: Raw {
222+ eprintln ! ( "WARNING: This envelope contains raw items. Adding an item is not supported." ) ;
223+ }
218224 return ;
219225 } ;
220226
221- let item = item. into ( ) ;
222227 if self . event_id . is_none ( ) {
223228 if let EnvelopeItem :: Event ( ref event) = item {
224229 self . event_id = Some ( event. event_id ) ;
@@ -271,7 +276,7 @@ impl Envelope {
271276 P : FnMut ( & EnvelopeItem ) -> bool ,
272277 {
273278 let Items :: EnvelopeItems ( items) = self . items else {
274- return None ;
279+ return if predicate ( & EnvelopeItem :: Raw ) { Some ( self ) } else { None } ;
275280 } ;
276281
277282 let mut filtered = Envelope :: new ( ) ;
@@ -336,13 +341,16 @@ impl Envelope {
336341 continue ;
337342 }
338343 EnvelopeItem :: Profile ( profile) => serde_json:: to_writer ( & mut item_buf, profile) ?,
344+ EnvelopeItem :: Raw => {
345+ continue ;
346+ }
339347 }
340348 let item_type = match item {
341349 EnvelopeItem :: Event ( _) => "event" ,
342350 EnvelopeItem :: SessionUpdate ( _) => "session" ,
343351 EnvelopeItem :: SessionAggregates ( _) => "sessions" ,
344352 EnvelopeItem :: Transaction ( _) => "transaction" ,
345- EnvelopeItem :: Attachment ( _) => unreachable ! ( ) ,
353+ EnvelopeItem :: Attachment ( _) | EnvelopeItem :: Raw => unreachable ! ( ) ,
346354 EnvelopeItem :: Profile ( _) => "profile" ,
347355 } ;
348356 writeln ! (
0 commit comments