private void OnSvUserlistUpdate(SvUserlistUpdate msg) { mainDialog.InvokeAsync(() => { mainDialog.UpdateUserList(msg); }); }
private void OnClientAuthSuccess(ClientId id) { // XXX: could be optimized: collect all userlist updates and broadcast merged // update once all clients are updated var msg = new SvUserlistUpdate(); msg.Connected = new[] { clients[id].Login }; SendBroadcast(id, msg); }
public void UpdateUserList(SvUserlistUpdate msg) { foreach (var username in msg.Disconnected) { lvUsers.Items.RemoveByKey(username); } foreach (var username in msg.Connected) { lvUsers.Items.Add(CreateUserlistItem(username)); } }
private void DisconnectClient(SocketClientBase cl) { if (cl.DeferredDisconnect) { return; } Root.Log(LogLevel.Info, "Server: disconnecting client: " + GetClientName(cl)); cl.DeferredDisconnect = true; delClients.Enqueue(cl); cl.Params.Socket.Shutdown(SocketShutdown.Both); cl.Params.Socket.Close(); if (cl.Authenticated) { var msg = new SvUserlistUpdate(); msg.Disconnected = new[] { cl.Login }; SendBroadcast(cl.Id, msg); } }
public void SaveLoadSvUserlistUpdate() { // arrange string[] refConnected = { "godzilla", "octopus" }; string[] refDisconnected = { "admin", "user", "king" }; var msg = new SvUserlistUpdate { Connected = refConnected, Disconnected = refDisconnected, }; // act MultiprotocolSaveLoad(msg, () => { // assert Assert.AreEqual(msg.Connected, refConnected); Assert.AreEqual(msg.Disconnected, refDisconnected); }); }