Example #1
0
 private void HandleSubscriptionRequests()
 {
     if (this.m_queuedSubscriptions.Count > 0)
     {
         long elapsedMilliseconds = this.m_stopWatch.ElapsedMilliseconds;
         this.m_presenceSubscriptionBalance  = Math.Min(0f, this.m_presenceSubscriptionBalance + (float)(elapsedMilliseconds - this.m_lastPresenceSubscriptionSent) * 0.00333333341f);
         this.m_lastPresenceSubscriptionSent = elapsedMilliseconds;
         List <bnet.protocol.EntityId> list = new List <bnet.protocol.EntityId>();
         foreach (bnet.protocol.EntityId entityId in this.m_queuedSubscriptions)
         {
             if (this.m_presenceSubscriptionBalance - 1f < -100f)
             {
                 break;
             }
             PresenceAPI.PresenceRefCountObject presenceRefCountObject = this.m_presenceSubscriptions[entityId];
             SubscribeRequest subscribeRequest = new SubscribeRequest();
             subscribeRequest.SetObjectId(ChannelAPI.GetNextObjectId());
             subscribeRequest.SetEntityId(entityId);
             presenceRefCountObject.objectId = subscribeRequest.ObjectId;
             this.m_battleNet.Channel.AddActiveChannel(subscribeRequest.ObjectId, new ChannelAPI.ChannelReferenceObject(entityId, ChannelAPI.ChannelType.PRESENCE_CHANNEL));
             this.m_rpcConnection.QueueRequest(this.m_presenceService.Id, 1u, subscribeRequest, new RPCContextDelegate(this.PresenceSubscribeCallback), 0u);
             this.m_presenceSubscriptionBalance -= 1f;
             list.Add(entityId);
         }
         foreach (bnet.protocol.EntityId item in list)
         {
             this.m_queuedSubscriptions.Remove(item);
         }
     }
 }
Example #2
0
 private void HandleSubscriptionRequests()
 {
     if (this.m_queuedSubscriptions.get_Count() > 0)
     {
         long elapsedMilliseconds = this.m_stopWatch.get_ElapsedMilliseconds();
         this.m_presenceSubscriptionBalance  = Math.Min(0f, this.m_presenceSubscriptionBalance + (float)(elapsedMilliseconds - this.m_lastPresenceSubscriptionSent) * 0.00333333341f);
         this.m_lastPresenceSubscriptionSent = elapsedMilliseconds;
         List <bnet.protocol.EntityId> list = new List <bnet.protocol.EntityId>();
         using (HashSet <bnet.protocol.EntityId> .Enumerator enumerator = this.m_queuedSubscriptions.GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 bnet.protocol.EntityId current = enumerator.get_Current();
                 if (this.m_presenceSubscriptionBalance - 1f < -100f)
                 {
                     break;
                 }
                 PresenceAPI.PresenceRefCountObject presenceRefCountObject = this.m_presenceSubscriptions[current];
                 SubscribeRequest subscribeRequest = new SubscribeRequest();
                 subscribeRequest.SetObjectId(ChannelAPI.GetNextObjectId());
                 subscribeRequest.SetEntityId(current);
                 presenceRefCountObject.objectId = subscribeRequest.ObjectId;
                 this.m_battleNet.Channel.AddActiveChannel(subscribeRequest.ObjectId, new ChannelAPI.ChannelReferenceObject(current, ChannelAPI.ChannelType.PRESENCE_CHANNEL));
                 this.m_rpcConnection.QueueRequest(this.m_presenceService.Id, 1u, subscribeRequest, new RPCContextDelegate(this.PresenceSubscribeCallback), 0u);
                 this.m_presenceSubscriptionBalance -= 1f;
                 list.Add(current);
             }
         }
         using (List <bnet.protocol.EntityId> .Enumerator enumerator2 = list.GetEnumerator())
         {
             while (enumerator2.MoveNext())
             {
                 bnet.protocol.EntityId current2 = enumerator2.get_Current();
                 this.m_queuedSubscriptions.Remove(current2);
             }
         }
     }
 }