예제 #1
0
        public IEnumerable <Message> RecentMessages()
        {
            lock (runningLock)
            {
                if (!running)
                {
                    throw new Exception("Not connected");
                }

                List <Message> messages = new List <Message>();
                IEnumerable <TfsTeamRoomMessage> teamMessages = restClient.Messages(room, "PostedTime gt " + lastMessageTime.ToUniversalTime().ToString(RestSharp.DateFormat.Iso8601));

                foreach (TfsTeamRoomMessage teamMessage in teamMessages)
                {
                    lastMessageTime = teamMessage.PostedTime;

                    if (teamMessage.Id <= hwm)
                    {
                        continue;
                    }

                    hwm = teamMessage.Id;

                    messages.Add(new Message()
                    {
                        Sender      = ResolveUserId(teamMessage.PostedByUserTfid),
                        SenderImage = ResolveUserImage(teamMessage.PostedByUserTfid),
                        Time        = teamMessage.PostedTime,
                        Content     = teamMessage.Content
                    });
                }

                return(messages);
            }
        }
예제 #2
0
        public void Start()
        {
            lock (runningLock)
            {
                if (running)
                {
                    Stop();
                }

                restClient = new TfsTeamRoomRestClient(restConfiguration);
                room       = null;

                foreach (TfsTeamRoom r in restClient.Rooms())
                {
                    if (roomName.Equals(r.Name))
                    {
                        room = r;
                        break;
                    }
                }

                if (room == null)
                {
                    throw new Exception(String.Format("Could not find team room '{0}'", roomName));
                }

                /* Load the high-water mark */
                IEnumerable <TfsTeamRoomMessage> messages = restClient.Messages(room);

                TfsTeamRoomMessage lastMessage = (messages.Count() > 0) ? restClient.Messages(room).Last() : null;

                lastMessageTime = (lastMessage != null) ? lastMessage.PostedTime : default(DateTime);
                hwm             = (lastMessage != null) ? lastMessage.Id : 0;

                running = true;
            }

            new Thread(delegate()
            {
                imageManager.Start();
            }).Start();
        }