diff options
Diffstat (limited to 'OpenSim/Framework/General')
-rw-r--r-- | OpenSim/Framework/General/ClientManager.cs | 56 | ||||
-rw-r--r-- | OpenSim/Framework/General/Interfaces/IClientAPI.cs | 4 | ||||
-rw-r--r-- | OpenSim/Framework/General/NullClientAPI.cs | 5 |
3 files changed, 55 insertions, 10 deletions
diff --git a/OpenSim/Framework/General/ClientManager.cs b/OpenSim/Framework/General/ClientManager.cs index 0e45d03..274a2d3 100644 --- a/OpenSim/Framework/General/ClientManager.cs +++ b/OpenSim/Framework/General/ClientManager.cs | |||
@@ -1,15 +1,16 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using libsecondlife.Packets; | ||
4 | using OpenSim.Framework.Interfaces; | 5 | using OpenSim.Framework.Interfaces; |
5 | 6 | ||
6 | namespace OpenSim.Framework | 7 | namespace OpenSim.Framework |
7 | { | 8 | { |
8 | public delegate void ForEachClientDelegate( IClientAPI client ); | 9 | public delegate void ForEachClientDelegate(IClientAPI client); |
9 | public class ClientManager | 10 | public class ClientManager |
10 | { | 11 | { |
11 | private Dictionary<uint, IClientAPI> m_clients; | 12 | private Dictionary<uint, IClientAPI> m_clients; |
12 | 13 | ||
13 | public void ForEachClient(ForEachClientDelegate whatToDo) | 14 | public void ForEachClient(ForEachClientDelegate whatToDo) |
14 | { | 15 | { |
15 | foreach (IClientAPI client in m_clients.Values) | 16 | foreach (IClientAPI client in m_clients.Values) |
@@ -17,20 +18,59 @@ namespace OpenSim.Framework | |||
17 | whatToDo(client); | 18 | whatToDo(client); |
18 | } | 19 | } |
19 | } | 20 | } |
20 | 21 | ||
21 | public ClientManager() | 22 | public ClientManager() |
22 | { | 23 | { |
23 | m_clients = new Dictionary<uint, IClientAPI>(); | 24 | m_clients = new Dictionary<uint, IClientAPI>(); |
24 | } | 25 | } |
25 | 26 | ||
26 | public void Remove(uint id) | 27 | public void Remove(uint id) |
27 | { | 28 | { |
28 | m_clients.Remove(id); | 29 | m_clients.Remove(id); |
29 | } | 30 | } |
31 | |||
32 | public void Add(uint id, IClientAPI client) | ||
33 | { | ||
34 | m_clients.Add(id, client); | ||
35 | } | ||
36 | |||
37 | public void InPacket(uint circuitCode, libsecondlife.Packets.Packet packet) | ||
38 | { | ||
39 | IClientAPI client; | ||
40 | |||
41 | if (m_clients.TryGetValue(circuitCode, out client)) | ||
42 | { | ||
43 | client.InPacket(packet); | ||
44 | } | ||
45 | } | ||
46 | |||
47 | public void ConnectionClosed(uint circuitCode) | ||
48 | { | ||
49 | IClientAPI client; | ||
50 | |||
51 | if (m_clients.TryGetValue(circuitCode, out client)) | ||
52 | { | ||
53 | m_clients.Remove(circuitCode); | ||
54 | client.Close(); | ||
55 | |||
56 | // TODO: Now remove all local childagents too | ||
57 | } | ||
58 | } | ||
30 | 59 | ||
31 | public void Add(uint id, IClientAPI client ) | 60 | public void ViewerEffectHandler(IClientAPI sender, ViewerEffectPacket.EffectBlock[] effectBlock) |
32 | { | 61 | { |
33 | m_clients.Add( id, client ); | 62 | ViewerEffectPacket packet = new ViewerEffectPacket(); |
63 | packet.Effect = effectBlock; | ||
64 | |||
65 | foreach (IClientAPI client in m_clients.Values) | ||
66 | { | ||
67 | if (client.AgentId != sender.AgentId) | ||
68 | { | ||
69 | packet.AgentData.AgentID = client.AgentId; | ||
70 | packet.AgentData.SessionID = client.SessionId; | ||
71 | client.OutPacket(packet); | ||
72 | } | ||
73 | } | ||
34 | } | 74 | } |
35 | } | 75 | } |
36 | } | 76 | } |
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs index 580a263..9c0771f 100644 --- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs | |||
@@ -34,6 +34,7 @@ using OpenSim.Framework.Data; | |||
34 | 34 | ||
35 | namespace OpenSim.Framework.Interfaces | 35 | namespace OpenSim.Framework.Interfaces |
36 | { | 36 | { |
37 | public delegate void ViewerEffectEventHandler(IClientAPI sender, ViewerEffectPacket.EffectBlock[] effectBlock); | ||
37 | public delegate void ChatFromViewer(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | 38 | public delegate void ChatFromViewer(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID); |
38 | public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp, string fromAgentName, string message, byte dialog); // Cut down from full list | 39 | public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp, string fromAgentName, string message, byte dialog); // Cut down from full list |
39 | public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos); | 40 | public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos); |
@@ -242,6 +243,7 @@ namespace OpenSim.Framework.Interfaces | |||
242 | void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID); | 243 | void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID); |
243 | void SetDebug(int newDebug); | 244 | void SetDebug(int newDebug); |
244 | void InPacket(Packet NewPack); | 245 | void InPacket(Packet NewPack); |
245 | void ConnectionClosed(); | 246 | void Close(); |
247 | event ViewerEffectEventHandler OnViewerEffect; | ||
246 | } | 248 | } |
247 | } | 249 | } |
diff --git a/OpenSim/Framework/General/NullClientAPI.cs b/OpenSim/Framework/General/NullClientAPI.cs index 2b6de9e..2fe46d6 100644 --- a/OpenSim/Framework/General/NullClientAPI.cs +++ b/OpenSim/Framework/General/NullClientAPI.cs | |||
@@ -52,6 +52,7 @@ namespace OpenSim.Framework | |||
52 | public event StatusChange OnChildAgentStatus; | 52 | public event StatusChange OnChildAgentStatus; |
53 | public event GenericCall2 OnStopMovement; | 53 | public event GenericCall2 OnStopMovement; |
54 | public event GenericCall6 OnRemoveAvatar; | 54 | public event GenericCall6 OnRemoveAvatar; |
55 | public event ViewerEffectEventHandler OnViewerEffect; | ||
55 | 56 | ||
56 | public event CreateNewInventoryItem OnCreateNewInventoryItem; | 57 | public event CreateNewInventoryItem OnCreateNewInventoryItem; |
57 | public event CreateInventoryFolder OnCreateNewInventoryFolder; | 58 | public event CreateInventoryFolder OnCreateNewInventoryFolder; |
@@ -172,9 +173,11 @@ namespace OpenSim.Framework | |||
172 | { | 173 | { |
173 | } | 174 | } |
174 | 175 | ||
175 | public void ConnectionClosed() | 176 | public void Close() |
176 | { | 177 | { |
177 | } | 178 | } |
179 | |||
180 | |||
178 | } | 181 | } |
179 | } | 182 | } |
180 | 183 | ||