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); } }
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(); }