aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/AgentCircuitData.cs84
1 files changed, 84 insertions, 0 deletions
diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs
index 2671e87..9d40af9 100644
--- a/OpenSim/Framework/AgentCircuitData.cs
+++ b/OpenSim/Framework/AgentCircuitData.cs
@@ -28,6 +28,10 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using OpenMetaverse; 30using OpenMetaverse;
31using OSD = OpenMetaverse.StructuredData.OSD;
32using OSDMap = OpenMetaverse.StructuredData.OSDMap;
33using OSDArray = OpenMetaverse.StructuredData.OSDArray;
34using OSDParser = OpenMetaverse.StructuredData.OSDParser;
31 35
32namespace OpenSim.Framework 36namespace OpenSim.Framework
33{ 37{
@@ -65,6 +69,86 @@ namespace OpenSim.Framework
65 CapsPath = cAgent.CapsPath; 69 CapsPath = cAgent.CapsPath;
66 ChildrenCapSeeds = cAgent.ChildrenCapSeeds; 70 ChildrenCapSeeds = cAgent.ChildrenCapSeeds;
67 } 71 }
72
73 public OSDMap PackAgentCircuitData()
74 {
75 OSDMap args = new OSDMap();
76 args["agent_id"] = OSD.FromUUID(AgentID);
77 args["base_folder"] = OSD.FromUUID(BaseFolder);
78 args["caps_path"] = OSD.FromString(CapsPath);
79
80 OSDArray childrenSeeds = new OSDArray(ChildrenCapSeeds.Count);
81 foreach (KeyValuePair<ulong, string> kvp in ChildrenCapSeeds)
82 {
83 OSDMap pair = new OSDMap();
84 pair["handle"] = OSD.FromString(kvp.Key.ToString());
85 pair["seed"] = OSD.FromString(kvp.Value);
86 childrenSeeds.Add(pair);
87 }
88 args["children_seeds"] = childrenSeeds;
89
90 args["child"] = OSD.FromBoolean(child);
91 args["circuit_code"] = OSD.FromString(circuitcode.ToString());
92 args["first_name"] = OSD.FromString(firstname);
93 args["last_name"] = OSD.FromString(lastname);
94 args["inventory_folder"] = OSD.FromUUID(InventoryFolder);
95 args["secure_session_id"] = OSD.FromUUID(SecureSessionID);
96 args["session_id"] = OSD.FromUUID(SessionID);
97 args["start_pos"] = OSD.FromString(startpos.ToString());
98
99 return args;
100 }
101
102 public void UnpackAgentCircuitData(OSDMap args)
103 {
104 if (args["agent_id"] != null)
105 AgentID = args["agent_id"].AsUUID();
106 if (args["base_folder"] != null)
107 BaseFolder = args["base_folder"].AsUUID();
108 if (args["caps_path"] != null)
109 CapsPath = args["caps_path"].AsString();
110
111 if ((args["children_seeds"] != null) && (args["children_seeds"].Type == OpenMetaverse.StructuredData.OSDType.Array))
112 {
113 OSDArray childrenSeeds = (OSDArray)(args["children_seeds"]);
114 ChildrenCapSeeds = new Dictionary<ulong, string>();
115 foreach (OSD o in childrenSeeds)
116 {
117 if (o.Type == OpenMetaverse.StructuredData.OSDType.Map)
118 {
119 ulong handle = 0;
120 string seed = "";
121 OSDMap pair = (OSDMap)o;
122 if (pair["handle"] != null)
123 if (!UInt64.TryParse(pair["handle"].AsString(), out handle))
124 continue;
125 if (pair["seed"] != null)
126 seed = pair["seed"].AsString();
127 if (!ChildrenCapSeeds.ContainsKey(handle))
128 ChildrenCapSeeds.Add(handle, seed);
129 }
130 }
131 }
132
133 if (args["child"] != null)
134 child = args["child"].AsBoolean();
135 if (args["circuit_code"] != null)
136 UInt32.TryParse(args["circuit_code"].AsString(), out circuitcode);
137 if (args["first_name"] != null)
138 firstname = args["first_name"].AsString();
139 if (args["last_name"] != null)
140 lastname = args["last_name"].AsString();
141 if (args["inventory_folder"] != null)
142 InventoryFolder = args["inventory_folder"].AsUUID();
143 if (args["secure_session_id"] != null)
144 SecureSessionID = args["secure_session_id"].AsUUID();
145 if (args["session_id"] != null)
146 SessionID = args["session_id"].AsUUID();
147 if (args["start_pos"] != null)
148 Vector3.TryParse(args["start_pos"].AsString(), out startpos);
149
150
151 }
68 } 152 }
69 153
70 [Serializable] 154 [Serializable]