@@ -12,6 +12,7 @@ pub use self::{
1212} ;
1313
1414use super :: { CloseFrame , payload:: incoming:: * } ;
15+ use crate :: gateway:: payload:: incoming:: rate_limited:: RateLimitMetadata ;
1516use crate :: id:: { Id , marker:: GuildMarker } ;
1617use std:: error:: Error ;
1718use std:: fmt:: { Debug , Display , Formatter , Result as FmtResult } ;
@@ -129,6 +130,8 @@ pub enum Event {
129130 MessageUpdate ( Box < MessageUpdate > ) ,
130131 /// A user's active presence (such as game or online status) was updated.
131132 PresenceUpdate ( Box < PresenceUpdate > ) ,
133+ /// A shard was rate limited for a gateway opcode.
134+ RateLimited ( RateLimited ) ,
132135 /// A reaction was added to a message.
133136 ReactionAdd ( Box < ReactionAdd > ) ,
134137 /// A reaction was removed from a message.
@@ -225,6 +228,10 @@ impl Event {
225228 Event :: MessagePollVoteAdd ( e) => e. guild_id ,
226229 Event :: MessagePollVoteRemove ( e) => e. guild_id ,
227230 Event :: PresenceUpdate ( e) => Some ( e. 0 . guild_id ) ,
231+ Event :: RateLimited ( RateLimited {
232+ meta : RateLimitMetadata :: RequestGuildMembers { guild_id, .. } ,
233+ ..
234+ } ) => Some ( * guild_id) ,
228235 Event :: ReactionAdd ( e) => e. 0 . guild_id ,
229236 Event :: ReactionRemove ( e) => e. 0 . guild_id ,
230237 Event :: ReactionRemoveAll ( e) => e. guild_id ,
@@ -312,6 +319,7 @@ impl Event {
312319 Self :: MessagePollVoteRemove ( _) => EventType :: MessagePollVoteRemove ,
313320 Self :: MessageUpdate ( _) => EventType :: MessageUpdate ,
314321 Self :: PresenceUpdate ( _) => EventType :: PresenceUpdate ,
322+ Self :: RateLimited ( _) => EventType :: RateLimited ,
315323 Self :: ReactionAdd ( _) => EventType :: ReactionAdd ,
316324 Self :: ReactionRemove ( _) => EventType :: ReactionRemove ,
317325 Self :: ReactionRemoveAll ( _) => EventType :: ReactionRemoveAll ,
@@ -393,6 +401,7 @@ impl From<DispatchEvent> for Event {
393401 DispatchEvent :: MessagePollVoteRemove ( v) => Self :: MessagePollVoteRemove ( v) ,
394402 DispatchEvent :: MessageUpdate ( v) => Self :: MessageUpdate ( v) ,
395403 DispatchEvent :: PresenceUpdate ( v) => Self :: PresenceUpdate ( v) ,
404+ DispatchEvent :: RateLimited ( v) => Self :: RateLimited ( v) ,
396405 DispatchEvent :: ReactionAdd ( v) => Self :: ReactionAdd ( v) ,
397406 DispatchEvent :: ReactionRemove ( v) => Self :: ReactionRemove ( v) ,
398407 DispatchEvent :: ReactionRemoveAll ( v) => Self :: ReactionRemoveAll ( v) ,
@@ -464,7 +473,7 @@ impl Error for EventConversionError {}
464473
465474#[ cfg( test) ]
466475mod tests {
467- //! `EVENT_THRESHOLD` is equivalent to 192 bytes. This was decided based on
476+ //! `EVENT_THRESHOLD` is equivalent to 312 bytes. This was decided based on
468477 //! the size of `Event` at the time of writing. The assertions here are to
469478 //! ensure that in the case the events themselves grow or shrink past the
470479 //! threshold, they are properly boxed or unboxed respectively.
@@ -534,6 +543,7 @@ mod tests {
534543 const_assert ! ( mem:: size_of:: <MessageDelete >( ) <= EVENT_THRESHOLD ) ;
535544 const_assert ! ( mem:: size_of:: <MessageDeleteBulk >( ) <= EVENT_THRESHOLD ) ;
536545 const_assert ! ( mem:: size_of:: <MemberRemove >( ) <= EVENT_THRESHOLD ) ;
546+ const_assert ! ( mem:: size_of:: <RateLimited >( ) <= EVENT_THRESHOLD ) ;
537547 const_assert ! ( mem:: size_of:: <Ready >( ) <= EVENT_THRESHOLD ) ;
538548 const_assert ! ( mem:: size_of:: <ReactionRemoveAll >( ) <= EVENT_THRESHOLD ) ;
539549 const_assert ! ( mem:: size_of:: <RoleCreate >( ) <= EVENT_THRESHOLD ) ;
0 commit comments