4Njava/lang/Integerio/moquette/BrokerConstants  io/moquette/broker/Session`(Lio/moquette/broker/ISessionsRepository$SessionData;ZLio/moquette/broker/SessionMessageQueue;)V  will!Lio/moquette/broker/Session$Will;  java/lang/Object()V+java/util/concurrent/atomic/AtomicReference  (io/moquette/broker/Session$SessionStatus DISCONNECTED*Lio/moquette/broker/Session$SessionStatus;  (Ljava/lang/Object;)V  !"status-Ljava/util/concurrent/atomic/AtomicReference;$java/util/HashSet # ' () subscriptionsLjava/util/Set;+java/util/HashMap * . /0inflightWindowLjava/util/Map;2java/util/concurrent/DelayQueue 1 5 67inflightTimeouts!Ljava/util/concurrent/DelayQueue; 9 :0 qos2Receiving<)java/util/concurrent/atomic/AtomicInteger ;> ?(I)V A BC inflightSlots+Ljava/util/concurrent/atomic/AtomicInteger;E"java/lang/IllegalArgumentExceptionG$sessionQueue parameter can't be null DI J(Ljava/lang/String;)V L MNdata4Lio/moquette/broker/ISessionsRepository$SessionData; P QRcleanZ T UV sessionQueue(Lio/moquette/broker/SessionMessageQueue; XYZ [\2io/moquette/broker/ISessionsRepository$SessionDataexpiryInterval()I ^ _ CONNECTING a bc assignStateW(Lio/moquette/broker/Session$SessionStatus;Lio/moquette/broker/Session$SessionStatus;)Z e f CONNECTED h ijmqttConnection#Lio/moquette/broker/MQTTConnection; l mnget()Ljava/lang/Object; Xp qrclientId()Ljava/lang/String;tjava/util/ArrayList sv w(Ljava/util/Collection;)V yz{ |} java/util/SetaddAll(Ljava/util/Collection;)Z-io/moquette/broker/subscriptions/Subscription  #io/netty/handler/codec/mqtt/MqttQoS EXACTLY_ONCE%Lio/netty/handler/codec/mqtt/MqttQoS; ~ b(Ljava/lang/String;Lio/moquette/broker/subscriptions/Topic;Lio/netty/handler/codec/mqtt/MqttQoS;)V y remove(Ljava/lang/Object;)Z   compareAndSet'(Ljava/lang/Object;Ljava/lang/Object;)Z  !io/moquette/broker/MQTTConnectiondropConnection  set   DISCONNECTING  valueOf(I)Ljava/lang/Integer;   java/util/Map&(Ljava/lang/Object;)Ljava/lang/Object;2io/moquette/broker/SessionRegistry$EnqueuedMessage  LOGLorg/slf4j/Logger;,Received a PUBREC with not matching packetId  Jorg/slf4j/Loggerwarn release/io/moquette/broker/SessionRegistry$PubRelMarkerLReceived a PUBREC for packetId that was already moved in second step of Qos2 Jinfo  put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;)io/moquette/broker/Session$InFlightPacket (IJ)V 1 add!(Ljava/util/concurrent/Delayed;)Z pubrel,(I)Lio/netty/handler/codec/mqtt/MqttMessage; sendIfWritableElseDrop,(Lio/netty/handler/codec/mqtt/MqttMessage;)V  drainQueueToConnection-Received a PUBCOMP with not matching packetId ; \incrementAndGet  sendPublishOnSessionAtQosj(Lio/moquette/broker/subscriptions/Topic;Lio/netty/handler/codec/mqtt/MqttQoS;Lio/netty/buffer/ByteBuf;Z)V  io/moquette/broker/Session$1.$SwitchMap$io$netty$handler$codec$mqtt$MqttQoS[I \ordinal   connected()Z sendPublishQos0  sendPublishQos1  sendPublishQos2Not admissible Jerror  isClean   canSkipQueue&(Lio/moquette/broker/MQTTConnection;)Z ; \decrementAndGet  \ nextPacketId      io/netty/buffer/ByteBufretain()Lio/netty/buffer/ByteBuf;3io/moquette/broker/SessionRegistry$PublishedMessage   r&io/moquette/broker/subscriptions/TopictoString  createNotRetainedPublishMessage(Ljava/lang/String;Lio/netty/handler/codec/mqtt/MqttQoS;Lio/netty/buffer/ByteBuf;I)Lio/netty/handler/codec/mqtt/MqttPublishMessage;   sendPublish3(Lio/netty/handler/codec/mqtt/MqttPublishMessage;)V ,Write direct to the peer, inflight slots: {} ;" m\ $ %&debug'(Ljava/lang/String;Ljava/lang/Object;)V ( )flush +   -./ 0&io/moquette/broker/SessionMessageQueueenqueue2Enqueue to peer session 4 %J -6 7isEmpty 9 :;channelLio/netty/channel/Channel; =>? @io/netty/channel/Channel isWritableB,Received a PUBACK with not matching packetId s> 1E FGdrainTo(Ljava/util/Collection;)I I JwdebugLogPacketIds LMN OPjava/util/Collectioniterator()Ljava/util/Iterator; RST Ujava/util/IteratorhasNext RW Xnnext Z [\packetIdI ^ m ` abtopic(Lio/moquette/broker/subscriptions/Topic; d e publishingQos g hipayloadLio/netty/buffer/ByteBuf; k lmpublishNotRetainedDuplicated(Lio/moquette/broker/Session$InFlightPacket;Lio/moquette/broker/subscriptions/Topic;Lio/netty/handler/codec/mqtt/MqttQoS;Lio/netty/buffer/ByteBuf;)Lio/netty/handler/codec/mqtt/MqttPublishMessage; o pisDebugEnabled L6sjava/lang/StringBuilder r rv wxappend(I)Ljava/lang/StringBuilder;z, r| w}-(Ljava/lang/String;)Ljava/lang/StringBuilder;#Resending {} in flight packets [{}] L \size  %9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V+io/netty/handler/codec/mqtt/MqttFixedHeader  +io/netty/handler/codec/mqtt/MqttMessageTypePUBLISH-Lio/netty/handler/codec/mqtt/MqttMessageType;  X(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V5io/netty/handler/codec/mqtt/MqttPublishVariableHeader  (Ljava/lang/String;I)V.io/netty/handler/codec/mqtt/MqttPublishMessage  (Lio/netty/handler/codec/mqtt/MqttFixedHeader;Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader;Lio/netty/buffer/ByteBuf;)V   inflighHasSlotsAndConnectionIsUp - ndequeue.Republishing all saved messages for session {}  &trace    io/netty/util/ReferenceCountUtil    remoteAddress()Ljava/net/InetSocketAddress;  java/util/Optionalof((Ljava/lang/Object;)Ljava/util/Optional;  empty()Ljava/util/Optional; -  closeAndPurge  values()Ljava/util/Collection;  Session{clientId=' r w(C)Ljava/lang/StringBuilder;, clean= r w(Z)Ljava/lang/StringBuilder; , status= r w-(Ljava/lang/Object;)Ljava/lang/StringBuilder;, inflightSlots= r  org/slf4j/LoggerFactory getLogger%(Ljava/lang/Class;)Lorg/slf4j/Logger;INFINITE_EXPIRY ConstantValue Signature^Lio/moquette/broker/SessionMessageQueue;YLjava/util/concurrent/atomic/AtomicReference;@Ljava/util/Set;XLjava/util/Map;NLjava/util/concurrent/DelayQueue;TLjava/util/Map;(Lio/moquette/broker/ISessionsRepository$SessionData;ZLio/moquette/broker/Session$Will;Lio/moquette/broker/SessionMessageQueue;)VCodeLineNumberTableLocalVariableTablethisLio/moquette/broker/Session;LocalVariableTypeTable(Lio/moquette/broker/ISessionsRepository$SessionData;ZLio/moquette/broker/Session$Will;Lio/moquette/broker/SessionMessageQueue;)V StackMapTable(Lio/moquette/broker/ISessionsRepository$SessionData;ZLio/moquette/broker/SessionMessageQueue;)VexpireImmediatelyupdate%(ZLio/moquette/broker/Session$Will;)VmarkConnectingcompleteConnectionbind&(Lio/moquette/broker/MQTTConnection;)V isBoundTo disconnected getClientIDgetSubscriptions()Ljava/util/List;C()Ljava/util/List;addSubscriptions(Ljava/util/List;)VnewSubscriptionsLjava/util/List;ALjava/util/List;D(Ljava/util/List;)VremoveSubscription+(Lio/moquette/broker/subscriptions/Topic;)VhasWillgetWill#()Lio/moquette/broker/Session$Will;expectednewStatecloseImmediately disconnectres processPubRecpubRecPacketIdremoved4Lio/moquette/broker/SessionRegistry$EnqueuedMessage;pubRel)Lio/netty/handler/codec/mqtt/MqttMessage;processPubComp messageID!sendRetainedPublishOnSessionAtQosi(Lio/moquette/broker/subscriptions/Topic;Lio/netty/handler/codec/mqtt/MqttQoS;Lio/netty/buffer/ByteBuf;)Vqos$sendNotRetainedPublishOnSessionAtQosretainedold publishMsg0Lio/netty/handler/codec/mqtt/MqttPublishMessage;msg5Lio/moquette/broker/SessionRegistry$PublishedMessage;localMqttConnectionRefpubAckReceived ackPacketIdflushAllQueuedMessagesresendInflightNotAckedpubMsgnotAckPacketId+Lio/moquette/broker/Session$InFlightPacket;expiredLjava/util/Collection;CLjava/util/Collection;packetsbLjava/lang/StringBuilder;F(Ljava/util/Collection;)V fixedHeader-Lio/netty/handler/codec/mqtt/MqttFixedHeader; varHeader7Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader; sendPacketIdmsgPubwritabilityChangedsendQueuedMessagesWhileOfflinereceivedPublishQos24(ILio/netty/handler/codec/mqtt/MqttPublishMessage;)VreceivedPubRelQos2 removedMsg4()Ljava/util/Optional;cleanUpgetSessionData6()Lio/moquette/broker/ISessionsRepository$SessionData; SourceFile Session.java InnerClassesB&io/moquette/broker/ISessionsRepository SessionDataEio/moquette/broker/Session$WillWill SessionStatusI"io/moquette/broker/SessionRegistryEnqueuedMessage PubRelMarkerInFlightPacketPublishedMessage  \QR UV!"ij()/067:0BCMN, z*+*- vw x4MNQR UV U  i**Y*#Y%&**Y,-*1Y34**Y,8*;Y =@- DYFH*+K*O*-S6 zlno(p3q>rK{O|Y~^ch*iiMNiQRiUV iUYX-E*KW @Q *O*,     QR : *]`W    5 *]d`  >*+g ijM*g+ij @H*k @H*kd @r2*Ko 6 sY*&u  V *&+xW      U*&~Y*Ko+W abB *    @/*  bcH *+,     M*g*g*   ~&*d`<*g* *`W %&  R/*O  ? x*-M,,,*g*-YW*4Y÷ŶWN*g-*ԱB $+56=>Sfksw*xx \gk   ?1*-M,׹,*@W*Ա" $,0 11\  U *+,-ܱ *  ab  hiU *+,-ܱ *  ab  hia,.X 6BN*4*g+,-%*+,-*+,- &  ( / >GJSV`4aaabaahiaR(  * **g:**@W6-W*-Y+,-:*@W*4Y÷ŶW+,-:*@!#*@!',Y+,-:**S,13^!"#&$-'2(Q*V+[,c.w023459:<=>@f -[\Q^+abhiRjSK( *g:*w*@W6-W*-Y+,-:*@W*4Y÷ŶW+,-:*ԧ!Y+,-:**S,JCDEFI#JBLGMLNTPhRuT|VWXZ[]f b[\B>u abhiRjT.3+0*S5$*@!*+8<`abc%d2`33j1@g&*@!**g8<h ij%h &$@?2*-M,A,*@W*Ա"opq r!t%v-w1x 22 \!!!3*Ա {| " λsY CL*4+DW*+H+KM,Q,VN*--Y]:.-Y:*4Y-Y÷ŶW*gЧK:_:c:f:*-j: *4Y-Y÷ŶW*g UV 2GLOW`vf `A#:ab3,hi G2$% &'  &(LR/2GJwan +qrYtM+KN-Q!-V:,Yuy{Wܲ~+,"8HK`*8)%aa&'D*+ a&(rR&,lm/Y-:Y,+Y:Y!H//$%/ab//hi-.!/0U**S5**SL+*@W*g=*-+N--*@W*4Y÷ŶW+:_cf:*ghJ'+,4<NRV^qw|>'q<\1\NJw!2 +1<33*Ա  4C**Ա  56q,W*8,N-W*\7?]*8M,W \8Q**g 9:]*S*-KL+Q+VM,*8KL+Q+VM,W" +/2TY\ +T]RR;</*K r~LrYtö{*Ko{'ȶ{*OͶ{*Ҷ{*@}Ŷ԰K L=! ճ4>?@BXACDFG@HJ HKLHM