/// <summary>
        /// Send like message
        /// </summary>
        /// <param name="likeHandle">Like handle</param>
        /// <param name="contentType">Content type</param>
        /// <param name="contentHandle">Content handle</param>
        /// <param name="userHandle">User handle</param>
        /// <param name="liked">Like status</param>
        /// <param name="contentPublisherType">Content publisher type</param>
        /// <param name="contentUserHandle">User handle of the content publisher</param>
        /// <param name="contentCreatedTime">Content createdTime</param>
        /// <param name="appHandle">App handle</param>
        /// <param name="lastUpdatedTime">Last updated time</param>
        /// <returns>Send message task</returns>
        public async Task SendLikeMessage(
            string likeHandle,
            ContentType contentType,
            string contentHandle,
            string userHandle,
            bool liked,
            PublisherType contentPublisherType,
            string contentUserHandle,
            DateTime contentCreatedTime,
            string appHandle,
            DateTime lastUpdatedTime)
        {
            LikeMessage message = new LikeMessage()
            {
                LikeHandle           = likeHandle,
                ContentType          = contentType,
                ContentHandle        = contentHandle,
                UserHandle           = userHandle,
                Liked                = liked,
                ContentPublisherType = contentPublisherType,
                ContentUserHandle    = contentUserHandle,
                ContentCreatedTime   = contentCreatedTime,
                AppHandle            = appHandle,
                LastUpdatedTime      = lastUpdatedTime
            };

            Queue queue = await this.QueueManager.GetQueue(this.QueueIdentifier);

            await queue.SendAsync(message);
        }
Example #2
0
        /// <summary>
        /// Process message
        /// </summary>
        /// <param name="message">Queue message</param>
        /// <returns>Process message task</returns>
        protected override async Task Process(IMessage message)
        {
            if (message is LikeMessage)
            {
                LikeMessage likeMessage = message as LikeMessage;
                ProcessType processType = ProcessType.Backend;
                if (likeMessage.DequeueCount > 1)
                {
                    processType = ProcessType.BackendRetry;
                }

                var likeLookupEntity = await this.likesManager.ReadLike(likeMessage.ContentHandle, likeMessage.UserHandle);

                if (likeLookupEntity != null && likeLookupEntity.LastUpdatedTime > likeMessage.LastUpdatedTime)
                {
                    return;
                }

                await this.likesManager.UpdateLike(
                    processType,
                    likeMessage.LikeHandle,
                    likeMessage.ContentType,
                    likeMessage.ContentHandle,
                    likeMessage.UserHandle,
                    likeMessage.Liked,
                    likeMessage.ContentPublisherType,
                    likeMessage.ContentUserHandle,
                    likeMessage.ContentCreatedTime,
                    likeMessage.AppHandle,
                    likeMessage.LastUpdatedTime,
                    likeLookupEntity);
            }
        }
Example #3
0
 void OnLikeReceived(LikeMessage msg)
 {
     LikeReceived(this, new SessionEventArgs(msg.SessionId, msg.Sender));
     Trace.WriteLine(msg.Sender + " is liking.");
 }