public void SetPermissions(WebClient client, WebPermission permission) { if (!Invited.Contains(client)) { return; } WebPermission lastPermission; if (m_AccessControlDictionary.TryGetValue(client, out lastPermission)) { m_AccessControlDictionary[client] = permission; if (permission == WebPermission.None) { LeaveShare(client); } } else { lock (m_AccessControlDictionary) { m_AccessControlDictionary.Add(client, permission); } } }
internal void Invite(WebClient client) { if (!Invited.Contains(client)) { m_Invited.Add(client); } client.Send(new WebMessage("webShareInvite", ToJSON())); }
public void Ban(WebClient client) { if (Invited.Contains(client)) { return; } //Ensure only 1 thread in m_Invited lock (m_Invited) { m_Invited.Add(client); } //If the user was present then make him leave if (Present.Contains(client)) { //Tell the client he was banned client.Que(new WebMessage("shareBan", ToJSON())); LeaveShare(client); } }