/// <summary>
        /// called when receive from the other peer online message
        /// </summary>
        /// <param name="fullPresenceInfo">contain the presence information of the peer that send the online message</param>
        void IAnnouncementBusinessLogic.OnOnlineAnnouncementReceived(FullPresenceInfo fullPresenceInfo)
        {
            if (!(fullPresenceInfo is MyFullPresenceInfo))
            {
                return;
            }

            var info = fullPresenceInfo as MyFullPresenceInfo;

            lock (syncLock)
            {
                MyUserUpdateState myUserUpdateState;
                if (!MyStateDictionary.TryGetValue(info.CorrelateKey, out myUserUpdateState))
                {
                    myUserUpdateState = new MyUserUpdateState
                    {
                        FullPresenceInfo = info
                    };
                    MyStateDictionary.Add(info.CorrelateKey, myUserUpdateState);
                }
                else
                {
                    MyStateDictionary[info.CorrelateKey].FullPresenceInfo = info;
                }
            }
        }
 void IAnnouncementBusinessLogic.OnPresenceInfoChangedReceived(FullPresenceInfo fullPresenceInfo)
 {
 }
 void IAnnouncementBusinessLogic.OnOnlineAnnouncementReceived(FullPresenceInfo fullPresenceInfo)
 {
     Contract.Requires <ArgumentNullException>(fullPresenceInfo != null);
 }
 /// <summary>
 /// called on other peer when some peer changed his presence information
 /// </summary>
 /// <param name="fullPresenceInfo">The new presence information of the peer that sent the message</param>
 void IAnnouncementBusinessLogic.OnPresenceInfoChangedReceived(FullPresenceInfo fullPresenceInfo)
 {
     LogManager.GetCurrentClassLogger().Debug("OnReceivePresenceInfoChanged , do nothing in this example");
 }