diff options
Diffstat (limited to 'samples/IrcChatSystem/ChatClientApp/Client/ChatClient.cs')
-rw-r--r-- | samples/IrcChatSystem/ChatClientApp/Client/ChatClient.cs | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/samples/IrcChatSystem/ChatClientApp/Client/ChatClient.cs b/samples/IrcChatSystem/ChatClientApp/Client/ChatClient.cs new file mode 100644 index 0000000..709df89 --- /dev/null +++ b/samples/IrcChatSystem/ChatClientApp/Client/ChatClient.cs @@ -0,0 +1,103 @@ +using System; +using Hik.Samples.Scs.IrcChat.Arguments; +using Hik.Samples.Scs.IrcChat.Contracts; + +namespace Hik.Samples.Scs.IrcChat.Client +{ + /// <summary> + /// This class implements IChatClient to use to be invoked by Chat Server. + /// </summary> + internal class ChatClient : IChatClient + { + #region Private fields + + /// <summary> + /// Reference to Chat Room window. + /// </summary> + private readonly IChatRoomView _chatRoom; + + #endregion + + #region Constructor + + /// <summary> + /// Creates a new ChatClient. + /// </summary> + /// <param name="chatRoom">Reference to Chat Room window</param> + public ChatClient(IChatRoomView chatRoom) + { + _chatRoom = chatRoom; + } + + #endregion + + #region IChatClient implementation + + /// <summary> + /// This method is used to get user list from chat server. + /// It is called by server, once after user logged in to server. + /// </summary> + /// <param name="users">All online user informations</param> + public void GetUserList(UserInfo[] users) + { + foreach (var user in users) + { + _chatRoom.AddUserToList(user); + } + } + + /// <summary> + /// This method is called from chat server to inform that a message + /// is sent to chat room publicly. + /// </summary> + /// <param name="nick">Nick of sender</param> + /// <param name="message">Message text</param> + public void OnMessageToRoom(string nick, ChatMessage message) + { + _chatRoom.OnMessageReceived(nick, message); + } + + /// <summary> + /// This method is called from chat server to inform that a message + /// is sent to the current used privately. + /// </summary> + /// <param name="nick">Nick of sender</param> + /// <param name="message">Message</param> + public void OnPrivateMessage(string nick, ChatMessage message) + { + _chatRoom.OnPrivateMessageReceived(nick, message); + } + + /// <summary> + /// This method is called from chat server to inform that a new user + /// joined to chat room. + /// </summary> + /// <param name="userInfo">Informations of new user</param> + public void OnUserLogin(UserInfo userInfo) + { + _chatRoom.AddUserToList(userInfo); + } + + /// <summary> + /// This method is called from chat server to inform that an existing user + /// has left the chat room. + /// </summary> + /// <param name="nick">Informations of new user</param> + public void OnUserLogout(string nick) + { + _chatRoom.RemoveUserFromList(nick); + } + + /// <summary> + /// This method is called from chat server to inform that a user changed his/her status. + /// </summary> + /// <param name="nick">Nick of the user</param> + /// <param name="newStatus">New status of the user</param> + public void OnUserStatusChange(string nick, UserStatus newStatus) + { + _chatRoom.OnUserStatusChange(nick, newStatus); + } + + #endregion + } +} |