aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--.nant/local.include3
-rw-r--r--CONTRIBUTORS.txt1
-rw-r--r--OpenSim/Data/MSSQL/MSSQLInventoryData.cs4
-rw-r--r--OpenSim/Data/MSSQL/MSSQLUserData.cs17
-rw-r--r--OpenSim/Framework/MainServer.cs8
-rw-r--r--OpenSim/Framework/SLUtil.cs282
-rw-r--r--OpenSim/Framework/Serialization/TarArchiveWriter.cs4
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs4
-rw-r--r--OpenSim/Framework/Servers/VersionInfo.cs2
-rw-r--r--OpenSim/Region/Application/ConfigurationLoader.cs19
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs47
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs35
-rw-r--r--OpenSim/Region/ClientStack/RegionApplicationBase.cs6
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs10
-rw-r--r--OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs12
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs2
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs5
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/IGroupsMessagingModule.cs73
-rw-r--r--OpenSim/Region/Framework/Interfaces/IGroupsModule.cs33
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs30
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs57
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs51
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs35
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs15
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs34
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneViewer.cs8
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs266
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs321
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs66
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs326
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs83
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs38
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs7
-rw-r--r--OpenSim/Server/Base/HttpServerBase.cs3
-rw-r--r--bin/CSJ2K.dllbin491520 -> 502784 bytes
-rw-r--r--bin/Newtonsoft.Json.XML6817
-rw-r--r--bin/Newtonsoft.Json.dllbin73728 -> 356352 bytes
-rw-r--r--bin/Newtonsoft.Json.pdbbin192000 -> 742912 bytes
-rwxr-xr-xbin/OpenSim.exe.config2
-rw-r--r--bin/OpenSim.ini.example9
-rw-r--r--bin/config-include/GridCommon.ini.example2
-rw-r--r--prebuild.xml7
47 files changed, 7072 insertions, 1679 deletions
diff --git a/.nant/local.include b/.nant/local.include
index f71e5d8..3db063b 100644
--- a/.nant/local.include
+++ b/.nant/local.include
@@ -20,6 +20,7 @@
20 <delete dir="${distbindir}/.nant"/> 20 <delete dir="${distbindir}/.nant"/>
21 <delete> 21 <delete>
22 <fileset basedir="${distbindir}"> 22 <fileset basedir="${distbindir}">
23 <include name="BUILDING.txt"/>
23 <include name="Makefile"/> 24 <include name="Makefile"/>
24 <include name="nant-color"/> 25 <include name="nant-color"/>
25 <include name="OpenSim.*"/> 26 <include name="OpenSim.*"/>
@@ -141,6 +142,8 @@
141 </exec> 142 </exec>
142 <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" /> 143 <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" />
143 144
145 <delete dir="%temp%"/>
146
144</target> 147</target>
145 148
146<target name="test-cov" depends="build"> 149<target name="test-cov" depends="build">
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 5b4959a..e5c8cb9 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -164,6 +164,7 @@ This software uses components from the following developers:
164* log4net (http://logging.apache.org/log4net/) 164* log4net (http://logging.apache.org/log4net/)
165* GlynnTucker.Cache (http://gtcache.sourceforge.net/) 165* GlynnTucker.Cache (http://gtcache.sourceforge.net/)
166* NDesk.Options 0.2.1 (http://www.ndesk.org/Options) 166* NDesk.Options 0.2.1 (http://www.ndesk.org/Options)
167* Json.NET 3.5 Release 6. The binary used is actually Newtonsoft.Json.Net20.dll for Mono 2.4 compatability (http://james.newtonking.com/projects/json-net.aspx)
167 168
168Some plugins are based on Cable Beach 169Some plugins are based on Cable Beach
169Cable Beach is Copyright (c) 2008 Intel Corporation 170Cable Beach is Copyright (c) 2008 Intel Corporation
diff --git a/OpenSim/Data/MSSQL/MSSQLInventoryData.cs b/OpenSim/Data/MSSQL/MSSQLInventoryData.cs
index 1482184..c1eee8d 100644
--- a/OpenSim/Data/MSSQL/MSSQLInventoryData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLInventoryData.cs
@@ -635,9 +635,9 @@ namespace OpenSim.Data.MSSQL
635 /// <param name="connection">connection to the database</param> 635 /// <param name="connection">connection to the database</param>
636 private void DeleteItemsInFolder(UUID folderID, SqlConnection connection) 636 private void DeleteItemsInFolder(UUID folderID, SqlConnection connection)
637 { 637 {
638 using (SqlCommand command = new SqlCommand("DELETE FROM inventoryitems WHERE folderID=@folderID", connection)) 638 using (SqlCommand command = new SqlCommand("DELETE FROM inventoryitems WHERE parentFolderID=@parentFolderID", connection))
639 { 639 {
640 command.Parameters.Add(database.CreateParameter("folderID", folderID)); 640 command.Parameters.Add(database.CreateParameter("parentFolderID", folderID));
641 641
642 try 642 try
643 { 643 {
diff --git a/OpenSim/Data/MSSQL/MSSQLUserData.cs b/OpenSim/Data/MSSQL/MSSQLUserData.cs
index 3ef1053..7fe8ed0 100644
--- a/OpenSim/Data/MSSQL/MSSQLUserData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLUserData.cs
@@ -582,8 +582,21 @@ namespace OpenSim.Data.MSSQL
582 /// <param name="appearance">the appearence</param> 582 /// <param name="appearance">the appearence</param>
583 override public void UpdateUserAppearance(UUID user, AvatarAppearance appearance) 583 override public void UpdateUserAppearance(UUID user, AvatarAppearance appearance)
584 { 584 {
585 string sql = @"DELETE FROM avatarappearance WHERE owner=@owner; 585 string sql = @"DELETE FROM avatarappearance WHERE owner=@owner";
586 INSERT INTO avatarappearance 586 using (AutoClosingSqlCommand cmd = database.Query(sql))
587 {
588 cmd.Parameters.Add(database.CreateParameter("@owner", appearance.Owner));
589 try
590 {
591 cmd.ExecuteNonQuery();
592 }
593 catch (Exception e)
594 {
595 m_log.ErrorFormat("[USER DB] Error deleting old user appearance, error: {0}", e.Message);
596 }
597 }
598
599 sql=@"INSERT INTO avatarappearance
587 (owner, serial, visual_params, texture, avatar_height, 600 (owner, serial, visual_params, texture, avatar_height,
588 body_item, body_asset, skin_item, skin_asset, hair_item, 601 body_item, body_asset, skin_item, skin_asset, hair_item,
589 hair_asset, eyes_item, eyes_asset, shirt_item, shirt_asset, 602 hair_asset, eyes_item, eyes_asset, shirt_item, shirt_asset,
diff --git a/OpenSim/Framework/MainServer.cs b/OpenSim/Framework/MainServer.cs
index 84cc05e..1f5f208 100644
--- a/OpenSim/Framework/MainServer.cs
+++ b/OpenSim/Framework/MainServer.cs
@@ -25,13 +25,17 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using OpenSim.Framework.Servers.HttpServer;
29using System.Collections.Generic; 28using System.Collections.Generic;
29using System.Reflection;
30using log4net;
31using OpenSim.Framework.Servers.HttpServer;
30 32
31namespace OpenSim.Framework 33namespace OpenSim.Framework
32{ 34{
33 public class MainServer 35 public class MainServer
34 { 36 {
37 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
38
35 private static BaseHttpServer instance = null; 39 private static BaseHttpServer instance = null;
36 private static Dictionary<uint, BaseHttpServer> m_Servers = 40 private static Dictionary<uint, BaseHttpServer> m_Servers =
37 new Dictionary<uint, BaseHttpServer>(); 41 new Dictionary<uint, BaseHttpServer>();
@@ -53,6 +57,8 @@ namespace OpenSim.Framework
53 return m_Servers[port]; 57 return m_Servers[port];
54 58
55 m_Servers[port] = new BaseHttpServer(port); 59 m_Servers[port] = new BaseHttpServer(port);
60
61 m_log.InfoFormat("[MAIN HTTP SERVER]: Starting main http server on port {0}", port);
56 m_Servers[port].Start(); 62 m_Servers[port].Start();
57 63
58 return m_Servers[port]; 64 return m_Servers[port];
diff --git a/OpenSim/Framework/SLUtil.cs b/OpenSim/Framework/SLUtil.cs
new file mode 100644
index 0000000..ff5f8b9
--- /dev/null
+++ b/OpenSim/Framework/SLUtil.cs
@@ -0,0 +1,282 @@
1using System;
2using System.Collections.Generic;
3using OpenMetaverse;
4
5namespace OpenSim.Framework
6{
7 public static class SLUtil
8 {
9 #region SL / file extension / content-type conversions
10
11 public static string SLAssetTypeToContentType(int assetType)
12 {
13 switch ((AssetType)assetType)
14 {
15 case AssetType.Texture:
16 return "image/x-j2c";
17 case AssetType.Sound:
18 return "application/ogg";
19 case AssetType.CallingCard:
20 return "application/vnd.ll.callingcard";
21 case AssetType.Landmark:
22 return "application/vnd.ll.landmark";
23 case AssetType.Clothing:
24 return "application/vnd.ll.clothing";
25 case AssetType.Object:
26 return "application/vnd.ll.primitive";
27 case AssetType.Notecard:
28 return "application/vnd.ll.notecard";
29 case AssetType.Folder:
30 return "application/vnd.ll.folder";
31 case AssetType.RootFolder:
32 return "application/vnd.ll.rootfolder";
33 case AssetType.LSLText:
34 return "application/vnd.ll.lsltext";
35 case AssetType.LSLBytecode:
36 return "application/vnd.ll.lslbyte";
37 case AssetType.TextureTGA:
38 case AssetType.ImageTGA:
39 return "image/tga";
40 case AssetType.Bodypart:
41 return "application/vnd.ll.bodypart";
42 case AssetType.TrashFolder:
43 return "application/vnd.ll.trashfolder";
44 case AssetType.SnapshotFolder:
45 return "application/vnd.ll.snapshotfolder";
46 case AssetType.LostAndFoundFolder:
47 return "application/vnd.ll.lostandfoundfolder";
48 case AssetType.SoundWAV:
49 return "audio/x-wav";
50 case AssetType.ImageJPEG:
51 return "image/jpeg";
52 case AssetType.Animation:
53 return "application/vnd.ll.animation";
54 case AssetType.Gesture:
55 return "application/vnd.ll.gesture";
56 case AssetType.Simstate:
57 return "application/x-metaverse-simstate";
58 case AssetType.Unknown:
59 default:
60 return "application/octet-stream";
61 }
62 }
63
64 public static sbyte ContentTypeToSLAssetType(string contentType)
65 {
66 switch (contentType)
67 {
68 case "image/x-j2c":
69 case "image/jp2":
70 return (sbyte)AssetType.Texture;
71 case "application/ogg":
72 return (sbyte)AssetType.Sound;
73 case "application/vnd.ll.callingcard":
74 case "application/x-metaverse-callingcard":
75 return (sbyte)AssetType.CallingCard;
76 case "application/vnd.ll.landmark":
77 case "application/x-metaverse-landmark":
78 return (sbyte)AssetType.Landmark;
79 case "application/vnd.ll.clothing":
80 case "application/x-metaverse-clothing":
81 return (sbyte)AssetType.Clothing;
82 case "application/vnd.ll.primitive":
83 case "application/x-metaverse-primitive":
84 return (sbyte)AssetType.Object;
85 case "application/vnd.ll.notecard":
86 case "application/x-metaverse-notecard":
87 return (sbyte)AssetType.Notecard;
88 case "application/vnd.ll.folder":
89 return (sbyte)AssetType.Folder;
90 case "application/vnd.ll.rootfolder":
91 return (sbyte)AssetType.RootFolder;
92 case "application/vnd.ll.lsltext":
93 case "application/x-metaverse-lsl":
94 return (sbyte)AssetType.LSLText;
95 case "application/vnd.ll.lslbyte":
96 case "application/x-metaverse-lso":
97 return (sbyte)AssetType.LSLBytecode;
98 case "image/tga":
99 // Note that AssetType.TextureTGA will be converted to AssetType.ImageTGA
100 return (sbyte)AssetType.ImageTGA;
101 case "application/vnd.ll.bodypart":
102 case "application/x-metaverse-bodypart":
103 return (sbyte)AssetType.Bodypart;
104 case "application/vnd.ll.trashfolder":
105 return (sbyte)AssetType.TrashFolder;
106 case "application/vnd.ll.snapshotfolder":
107 return (sbyte)AssetType.SnapshotFolder;
108 case "application/vnd.ll.lostandfoundfolder":
109 return (sbyte)AssetType.LostAndFoundFolder;
110 case "audio/x-wav":
111 return (sbyte)AssetType.SoundWAV;
112 case "image/jpeg":
113 return (sbyte)AssetType.ImageJPEG;
114 case "application/vnd.ll.animation":
115 case "application/x-metaverse-animation":
116 return (sbyte)AssetType.Animation;
117 case "application/vnd.ll.gesture":
118 case "application/x-metaverse-gesture":
119 return (sbyte)AssetType.Gesture;
120 case "application/x-metaverse-simstate":
121 return (sbyte)AssetType.Simstate;
122 case "application/octet-stream":
123 default:
124 return (sbyte)AssetType.Unknown;
125 }
126 }
127
128 public static sbyte ContentTypeToSLInvType(string contentType)
129 {
130 switch (contentType)
131 {
132 case "image/x-j2c":
133 case "image/jp2":
134 case "image/tga":
135 case "image/jpeg":
136 return (sbyte)InventoryType.Texture;
137 case "application/ogg":
138 case "audio/x-wav":
139 return (sbyte)InventoryType.Sound;
140 case "application/vnd.ll.callingcard":
141 case "application/x-metaverse-callingcard":
142 return (sbyte)InventoryType.CallingCard;
143 case "application/vnd.ll.landmark":
144 case "application/x-metaverse-landmark":
145 return (sbyte)InventoryType.Landmark;
146 case "application/vnd.ll.clothing":
147 case "application/x-metaverse-clothing":
148 case "application/vnd.ll.bodypart":
149 case "application/x-metaverse-bodypart":
150 return (sbyte)InventoryType.Wearable;
151 case "application/vnd.ll.primitive":
152 case "application/x-metaverse-primitive":
153 return (sbyte)InventoryType.Object;
154 case "application/vnd.ll.notecard":
155 case "application/x-metaverse-notecard":
156 return (sbyte)InventoryType.Notecard;
157 case "application/vnd.ll.folder":
158 return (sbyte)InventoryType.Folder;
159 case "application/vnd.ll.rootfolder":
160 return (sbyte)InventoryType.RootCategory;
161 case "application/vnd.ll.lsltext":
162 case "application/x-metaverse-lsl":
163 case "application/vnd.ll.lslbyte":
164 case "application/x-metaverse-lso":
165 return (sbyte)InventoryType.LSL;
166 case "application/vnd.ll.trashfolder":
167 case "application/vnd.ll.snapshotfolder":
168 case "application/vnd.ll.lostandfoundfolder":
169 return (sbyte)InventoryType.Folder;
170 case "application/vnd.ll.animation":
171 case "application/x-metaverse-animation":
172 return (sbyte)InventoryType.Animation;
173 case "application/vnd.ll.gesture":
174 case "application/x-metaverse-gesture":
175 return (sbyte)InventoryType.Gesture;
176 case "application/x-metaverse-simstate":
177 return (sbyte)InventoryType.Snapshot;
178 case "application/octet-stream":
179 default:
180 return (sbyte)InventoryType.Unknown;
181 }
182 }
183
184 #endregion SL / file extension / content-type conversions
185
186 /// <summary>
187 /// Parse a notecard in Linden format to a string of ordinary text.
188 /// </summary>
189 /// <param name="rawInput"></param>
190 /// <returns></returns>
191 public static string ParseNotecardToString(string rawInput)
192 {
193 return string.Join("\n", ParseNotecardToList(rawInput).ToArray());
194 }
195
196 /// <summary>
197 /// Parse a notecard in Linden format to a list of ordinary lines.
198 /// </summary>
199 /// <param name="rawInput"></param>
200 /// <returns></returns>
201 public static List<string> ParseNotecardToList(string rawInput)
202 {
203 string[] input = rawInput.Replace("\r", "").Split('\n');
204 int idx = 0;
205 int level = 0;
206 List<string> output = new List<string>();
207 string[] words;
208
209 while (idx < input.Length)
210 {
211 if (input[idx] == "{")
212 {
213 level++;
214 idx++;
215 continue;
216 }
217
218 if (input[idx]== "}")
219 {
220 level--;
221 idx++;
222 continue;
223 }
224
225 switch (level)
226 {
227 case 0:
228 words = input[idx].Split(' '); // Linden text ver
229 // Notecards are created *really* empty. Treat that as "no text" (just like after saving an empty notecard)
230 if (words.Length < 3)
231 return output;
232
233 int version = int.Parse(words[3]);
234 if (version != 2)
235 return output;
236 break;
237 case 1:
238 words = input[idx].Split(' ');
239 if (words[0] == "LLEmbeddedItems")
240 break;
241 if (words[0] == "Text")
242 {
243 int len = int.Parse(words[2]);
244 idx++;
245
246 int count = -1;
247
248 while (count < len)
249 {
250 // int l = input[idx].Length;
251 string ln = input[idx];
252
253 int need = len-count-1;
254 if (ln.Length > need)
255 ln = ln.Substring(0, need);
256
257 output.Add(ln);
258 count += ln.Length + 1;
259 idx++;
260 }
261
262 return output;
263 }
264 break;
265 case 2:
266 words = input[idx].Split(' '); // count
267 if (words[0] == "count")
268 {
269 int c = int.Parse(words[1]);
270 if (c > 0)
271 return output;
272 break;
273 }
274 break;
275 }
276 idx++;
277 }
278
279 return output;
280 }
281 }
282} \ No newline at end of file
diff --git a/OpenSim/Framework/Serialization/TarArchiveWriter.cs b/OpenSim/Framework/Serialization/TarArchiveWriter.cs
index 20d0f7e..0bd639f 100644
--- a/OpenSim/Framework/Serialization/TarArchiveWriter.cs
+++ b/OpenSim/Framework/Serialization/TarArchiveWriter.cs
@@ -208,7 +208,9 @@ namespace OpenSim.Framework.Serialization
208 m_bw.Write(header); 208 m_bw.Write(header);
209 209
210 // Write out data 210 // Write out data
211 m_bw.Write(data); 211 // An IOException occurs if we try to write out an empty array in Mono 2.6
212 if (data.Length > 0)
213 m_bw.Write(data);
212 214
213 if (data.Length % 512 != 0) 215 if (data.Length % 512 != 0)
214 { 216 {
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index 214f936..297d047 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -311,7 +311,7 @@ namespace OpenSim.Framework.Servers.HttpServer
311 } 311 }
312 catch (Exception e) 312 catch (Exception e)
313 { 313 {
314 m_log.ErrorFormat("[BASE HTTP SERVER]: OnRequest() failed with {0} {1}", e.Message, e.StackTrace); 314 m_log.Error(string.Format("[BASE HTTP SERVER]: OnRequest() failed with "), e);
315 } 315 }
316 } 316 }
317 317
@@ -1572,7 +1572,6 @@ namespace OpenSim.Framework.Servers.HttpServer
1572 1572
1573 public void Start() 1573 public void Start()
1574 { 1574 {
1575 m_log.Info("[BASE HTTP SERVER]: Starting up HTTP Server");
1576 StartHTTP(); 1575 StartHTTP();
1577 } 1576 }
1578 1577
@@ -1580,7 +1579,6 @@ namespace OpenSim.Framework.Servers.HttpServer
1580 { 1579 {
1581 try 1580 try
1582 { 1581 {
1583 m_log.Debug("[BASE HTTP SERVER]: Spawned main thread OK");
1584 //m_httpListener = new HttpListener(); 1582 //m_httpListener = new HttpListener();
1585 NotSocketErrors = 0; 1583 NotSocketErrors = 0;
1586 if (!m_ssl) 1584 if (!m_ssl)
diff --git a/OpenSim/Framework/Servers/VersionInfo.cs b/OpenSim/Framework/Servers/VersionInfo.cs
index 1ae493d..fb41ef3 100644
--- a/OpenSim/Framework/Servers/VersionInfo.cs
+++ b/OpenSim/Framework/Servers/VersionInfo.cs
@@ -30,7 +30,7 @@ namespace OpenSim
30 public class VersionInfo 30 public class VersionInfo
31 { 31 {
32 private const string VERSION_NUMBER = "0.6.9"; 32 private const string VERSION_NUMBER = "0.6.9";
33 private const Flavour VERSION_FLAVOUR = Flavour.Release; 33 private const Flavour VERSION_FLAVOUR = Flavour.Post_Fixes;
34 34
35 public enum Flavour 35 public enum Flavour
36 { 36 {
diff --git a/OpenSim/Region/Application/ConfigurationLoader.cs b/OpenSim/Region/Application/ConfigurationLoader.cs
index 21edcc5..da77a2b 100644
--- a/OpenSim/Region/Application/ConfigurationLoader.cs
+++ b/OpenSim/Region/Application/ConfigurationLoader.cs
@@ -164,12 +164,12 @@ namespace OpenSim
164 m_config.Source = new IniConfigSource(); 164 m_config.Source = new IniConfigSource();
165 m_config.Source.Merge(DefaultConfig()); 165 m_config.Source.Merge(DefaultConfig());
166 166
167 m_log.Info("[CONFIG] Reading configuration settings"); 167 m_log.Info("[CONFIG]: Reading configuration settings");
168 168
169 if (sources.Count == 0) 169 if (sources.Count == 0)
170 { 170 {
171 m_log.FatalFormat("[CONFIG] Could not load any configuration"); 171 m_log.FatalFormat("[CONFIG]: Could not load any configuration");
172 m_log.FatalFormat("[CONFIG] Did you copy the OpenSim.ini.example file to OpenSim.ini?"); 172 m_log.FatalFormat("[CONFIG]: Did you copy the OpenSim.ini.example file to OpenSim.ini?");
173 Environment.Exit(1); 173 Environment.Exit(1);
174 } 174 }
175 175
@@ -182,8 +182,8 @@ namespace OpenSim
182 182
183 if (!iniFileExists) 183 if (!iniFileExists)
184 { 184 {
185 m_log.FatalFormat("[CONFIG] Could not load any configuration"); 185 m_log.FatalFormat("[CONFIG]: Could not load any configuration");
186 m_log.FatalFormat("[CONFIG] Configuration exists, but there was an error loading it!"); 186 m_log.FatalFormat("[CONFIG]: Configuration exists, but there was an error loading it!");
187 Environment.Exit(1); 187 Environment.Exit(1);
188 } 188 }
189 189
@@ -257,20 +257,17 @@ namespace OpenSim
257 257
258 if (!IsUri(iniPath)) 258 if (!IsUri(iniPath))
259 { 259 {
260 m_log.InfoFormat("[CONFIG] Reading configuration file {0}", 260 m_log.InfoFormat("[CONFIG]: Reading configuration file {0}", Path.GetFullPath(iniPath));
261 Path.GetFullPath(iniPath));
262 261
263 m_config.Source.Merge(new IniConfigSource(iniPath)); 262 m_config.Source.Merge(new IniConfigSource(iniPath));
264 success = true; 263 success = true;
265 } 264 }
266 else 265 else
267 { 266 {
268 m_log.InfoFormat("[CONFIG] {0} is a http:// URI, fetching ...", 267 m_log.InfoFormat("[CONFIG]: {0} is a http:// URI, fetching ...", iniPath);
269 iniPath);
270 268
271 // The ini file path is a http URI 269 // The ini file path is a http URI
272 // Try to read it 270 // Try to read it
273 //
274 try 271 try
275 { 272 {
276 XmlReader r = XmlReader.Create(iniPath); 273 XmlReader r = XmlReader.Create(iniPath);
@@ -281,7 +278,7 @@ namespace OpenSim
281 } 278 }
282 catch (Exception e) 279 catch (Exception e)
283 { 280 {
284 m_log.FatalFormat("[CONFIG] Exception reading config from URI {0}\n" + e.ToString(), iniPath); 281 m_log.FatalFormat("[CONFIG]: Exception reading config from URI {0}\n" + e.ToString(), iniPath);
285 Environment.Exit(1); 282 Environment.Exit(1);
286 } 283 }
287 } 284 }
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 2ab713d..724c8bc 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -348,6 +348,23 @@ namespace OpenSim.Region.ClientStack.LindenUDP
348 protected PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock> m_avatarTerseUpdates; 348 protected PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock> m_avatarTerseUpdates;
349 private PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock> m_primTerseUpdates; 349 private PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock> m_primTerseUpdates;
350 private PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock> m_primFullUpdates; 350 private PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock> m_primFullUpdates;
351
352 /// <value>
353 /// List used in construction of data blocks for an object update packet. This is to stop us having to
354 /// continually recreate it.
355 /// </value>
356 protected List<ObjectUpdatePacket.ObjectDataBlock> m_fullUpdateDataBlocksBuilder;
357
358 /// <value>
359 /// Maintain a record of all the objects killed. This allows us to stop an update being sent from the
360 /// thread servicing the m_primFullUpdates queue after a kill. If this happens the object persists as an
361 /// ownerless phantom.
362 ///
363 /// All manipulation of this set has to occur under a m_primFullUpdate.SyncRoot lock
364 ///
365 /// </value>
366 protected HashSet<uint> m_killRecord;
367
351 private int m_moneyBalance; 368 private int m_moneyBalance;
352 private int m_animationSequenceNumber = 1; 369 private int m_animationSequenceNumber = 1;
353 private bool m_SendLogoutPacketWhenClosing = true; 370 private bool m_SendLogoutPacketWhenClosing = true;
@@ -437,6 +454,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
437 m_avatarTerseUpdates = new PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock>(); 454 m_avatarTerseUpdates = new PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock>();
438 m_primTerseUpdates = new PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock>(); 455 m_primTerseUpdates = new PriorityQueue<double, ImprovedTerseObjectUpdatePacket.ObjectDataBlock>();
439 m_primFullUpdates = new PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock>(m_scene.Entities.Count); 456 m_primFullUpdates = new PriorityQueue<double, ObjectUpdatePacket.ObjectDataBlock>(m_scene.Entities.Count);
457 m_fullUpdateDataBlocksBuilder = new List<ObjectUpdatePacket.ObjectDataBlock>();
458 m_killRecord = new HashSet<uint>();
440 459
441 m_assetService = m_scene.RequestModuleInterface<IAssetService>(); 460 m_assetService = m_scene.RequestModuleInterface<IAssetService>();
442 m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>(); 461 m_hyperAssets = m_scene.RequestModuleInterface<IHyperAssetService>();
@@ -1476,7 +1495,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1476 kill.ObjectData[0].ID = localID; 1495 kill.ObjectData[0].ID = localID;
1477 kill.Header.Reliable = true; 1496 kill.Header.Reliable = true;
1478 kill.Header.Zerocoded = true; 1497 kill.Header.Zerocoded = true;
1479 OutPacket(kill, ThrottleOutPacketType.State); 1498
1499 lock (m_primFullUpdates.SyncRoot)
1500 {
1501 m_killRecord.Add(localID);
1502 OutPacket(kill, ThrottleOutPacketType.State);
1503 }
1480 } 1504 }
1481 1505
1482 /// <summary> 1506 /// <summary>
@@ -3518,21 +3542,34 @@ namespace OpenSim.Region.ClientStack.LindenUDP
3518 if (count == 0) 3542 if (count == 0)
3519 return; 3543 return;
3520 3544
3521 outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[count]; 3545 m_fullUpdateDataBlocksBuilder.Clear();
3546
3522 for (int i = 0; i < count; i++) 3547 for (int i = 0; i < count; i++)
3523 { 3548 {
3524 outPacket.ObjectData[i] = m_primFullUpdates.Dequeue(); 3549 ObjectUpdatePacket.ObjectDataBlock block = m_primFullUpdates.Dequeue();
3525 3550
3551 if (!m_killRecord.Contains(block.ID))
3552 {
3553 m_fullUpdateDataBlocksBuilder.Add(block);
3554
3526// string text = Util.FieldToString(outPacket.ObjectData[i].Text); 3555// string text = Util.FieldToString(outPacket.ObjectData[i].Text);
3527// if (text.IndexOf("\n") >= 0) 3556// if (text.IndexOf("\n") >= 0)
3528// text = text.Remove(text.IndexOf("\n")); 3557// text = text.Remove(text.IndexOf("\n"));
3529// m_log.DebugFormat( 3558// m_log.DebugFormat(
3530// "[CLIENT]: Sending full info about prim {0} text {1} to client {2}", 3559// "[CLIENT]: Sending full info about prim {0} text {1} to client {2}",
3531// outPacket.ObjectData[i].ID, text, Name); 3560// outPacket.ObjectData[i].ID, text, Name);
3561 }
3562// else
3563// {
3564// m_log.WarnFormat(
3565// "[CLIENT]: Preventing full update for {0} after kill to {1}", block.ID, Name);
3566// }
3532 } 3567 }
3533 }
3534 3568
3535 OutPacket(outPacket, ThrottleOutPacketType.State); 3569 outPacket.ObjectData = m_fullUpdateDataBlocksBuilder.ToArray();
3570
3571 OutPacket(outPacket, ThrottleOutPacketType.State);
3572 }
3536 } 3573 }
3537 3574
3538 public void SendPrimTerseUpdate(SendPrimitiveTerseData data) 3575 public void SendPrimTerseUpdate(SendPrimitiveTerseData data)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 3c4fa72..5ed4cd7 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -513,6 +513,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
513 byte flags = buffer.Data[0]; 513 byte flags = buffer.Data[0];
514 bool isResend = (flags & Helpers.MSG_RESENT) != 0; 514 bool isResend = (flags & Helpers.MSG_RESENT) != 0;
515 bool isReliable = (flags & Helpers.MSG_RELIABLE) != 0; 515 bool isReliable = (flags & Helpers.MSG_RELIABLE) != 0;
516 bool isZerocoded = (flags & Helpers.MSG_ZEROCODED) != 0;
516 LLUDPClient udpClient = outgoingPacket.Client; 517 LLUDPClient udpClient = outgoingPacket.Client;
517 518
518 if (!udpClient.IsConnected) 519 if (!udpClient.IsConnected)
@@ -522,23 +523,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP
522 523
523 int dataLength = buffer.DataLength; 524 int dataLength = buffer.DataLength;
524 525
525 // Keep appending ACKs until there is no room left in the buffer or there are 526 // NOTE: I'm seeing problems with some viewers when ACKs are appended to zerocoded packets so I've disabled that here
526 // no more ACKs to append 527 if (!isZerocoded)
527 uint ackCount = 0;
528 uint ack;
529 while (dataLength + 5 < buffer.Data.Length && udpClient.PendingAcks.Dequeue(out ack))
530 { 528 {
531 Utils.UIntToBytesBig(ack, buffer.Data, dataLength); 529 // Keep appending ACKs until there is no room left in the buffer or there are
532 dataLength += 4; 530 // no more ACKs to append
533 ++ackCount; 531 uint ackCount = 0;
534 } 532 uint ack;
533 while (dataLength + 5 < buffer.Data.Length && udpClient.PendingAcks.Dequeue(out ack))
534 {
535 Utils.UIntToBytesBig(ack, buffer.Data, dataLength);
536 dataLength += 4;
537 ++ackCount;
538 }
535 539
536 if (ackCount > 0) 540 if (ackCount > 0)
537 { 541 {
538 // Set the last byte of the packet equal to the number of appended ACKs 542 // Set the last byte of the packet equal to the number of appended ACKs
539 buffer.Data[dataLength++] = (byte)ackCount; 543 buffer.Data[dataLength++] = (byte)ackCount;
540 // Set the appended ACKs flag on this packet 544 // Set the appended ACKs flag on this packet
541 buffer.Data[0] = (byte)(buffer.Data[0] | Helpers.MSG_APPENDED_ACKS); 545 buffer.Data[0] = (byte)(buffer.Data[0] | Helpers.MSG_APPENDED_ACKS);
546 }
542 } 547 }
543 548
544 buffer.DataLength = dataLength; 549 buffer.DataLength = dataLength;
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
index c7aeca14..e57e298 100644
--- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs
+++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs
@@ -105,10 +105,10 @@ namespace OpenSim.Region.ClientStack
105 105
106 if (m_networkServersInfo.HttpUsesSSL && (m_networkServersInfo.HttpListenerPort == m_networkServersInfo.httpSSLPort)) 106 if (m_networkServersInfo.HttpUsesSSL && (m_networkServersInfo.HttpListenerPort == m_networkServersInfo.httpSSLPort))
107 { 107 {
108 m_log.Error("[HTTP]: HTTP Server config failed. HTTP Server and HTTPS server must be on different ports"); 108 m_log.Error("[REGION SERVER]: HTTP Server config failed. HTTP Server and HTTPS server must be on different ports");
109 } 109 }
110 110
111 m_log.Info("[REGION]: Starting HTTP server"); 111 m_log.InfoFormat("[REGION SERVER]: Starting HTTP server on port {0}", m_httpServerPort);
112 m_httpServer.Start(); 112 m_httpServer.Start();
113 113
114 base.StartupSpecific(); 114 base.StartupSpecific();
@@ -134,4 +134,4 @@ namespace OpenSim.Region.ClientStack
134 return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier); 134 return physicsPluginManager.GetPhysicsScene(engine, meshEngine, config, osSceneIdentifier);
135 } 135 }
136 } 136 }
137} 137} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
index 72ec869..6a9a962 100644
--- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
@@ -79,7 +79,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
79 { 79 {
80 ScenePresence sp = m_scene.GetScenePresence(agentID); 80 ScenePresence sp = m_scene.GetScenePresence(agentID);
81 81
82 if (sp != null) 82 if (sp != null && !sp.IsChildAgent)
83 sp.ControllingClient.SendAgentAlertMessage(message, modal); 83 sp.ControllingClient.SendAgentAlertMessage(message, modal);
84 } 84 }
85 85
@@ -91,7 +91,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
91 { 91 {
92 ScenePresence presence = presenceList[i]; 92 ScenePresence presence = presenceList[i];
93 93
94 if (presence.Firstname == firstName && presence.Lastname == lastName) 94 if (!presence.IsChildAgent && presence.Firstname == firstName && presence.Lastname == lastName)
95 { 95 {
96 presence.ControllingClient.SendAgentAlertMessage(message, modal); 96 presence.ControllingClient.SendAgentAlertMessage(message, modal);
97 break; 97 break;
@@ -130,7 +130,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
130 } 130 }
131 131
132 ScenePresence sp = m_scene.GetScenePresence(avatarID); 132 ScenePresence sp = m_scene.GetScenePresence(avatarID);
133 if (sp != null) 133 if (sp != null && !sp.IsChildAgent)
134 sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels); 134 sp.ControllingClient.SendDialog(objectName, objectID, ownerFirstName, ownerLastName, message, textureID, ch, buttonlabels);
135 } 135 }
136 136
@@ -139,7 +139,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
139 { 139 {
140 ScenePresence sp = m_scene.GetScenePresence(avatarID); 140 ScenePresence sp = m_scene.GetScenePresence(avatarID);
141 141
142 if (sp != null) 142 if (sp != null && !sp.IsChildAgent)
143 sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); 143 sp.ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url);
144 } 144 }
145 145
@@ -206,4 +206,4 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
206 return result; 206 return result;
207 } 207 }
208 } 208 }
209} 209} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
index 27b64bf..40ffcb4 100644
--- a/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/XMLRPC/XMLRPCModule.cs
@@ -131,8 +131,8 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
131 { 131 {
132 // Start http server 132 // Start http server
133 // Attach xmlrpc handlers 133 // Attach xmlrpc handlers
134 m_log.Info("[REMOTE_DATA]: " + 134 m_log.Info("[XML RPC MODULE]: " +
135 "Starting XMLRPC Server on port " + m_remoteDataPort + " for llRemoteData commands."); 135 "Starting up XMLRPC Server on port " + m_remoteDataPort + " for llRemoteData commands.");
136 BaseHttpServer httpServer = new BaseHttpServer((uint) m_remoteDataPort); 136 BaseHttpServer httpServer = new BaseHttpServer((uint) m_remoteDataPort);
137 httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData); 137 httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData);
138 httpServer.Start(); 138 httpServer.Start();
@@ -192,7 +192,7 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
192 // This should no longer happen, but the check is reasonable anyway 192 // This should no longer happen, but the check is reasonable anyway
193 if (null == m_openChannels) 193 if (null == m_openChannels)
194 { 194 {
195 m_log.Warn("[RemoteDataReply] Attempt to open channel before initialization is complete"); 195 m_log.Warn("[XML RPC MODULE]: Attempt to open channel before initialization is complete");
196 return newChannel; 196 return newChannel;
197 } 197 }
198 198
@@ -279,7 +279,7 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
279 } 279 }
280 else 280 else
281 { 281 {
282 m_log.Warn("[RemoteDataReply]: Channel or message_id not found"); 282 m_log.Warn("[XML RPC MODULE]: Channel or message_id not found");
283 } 283 }
284 } 284 }
285 285
@@ -340,7 +340,7 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
340 } 340 }
341 else 341 else
342 { 342 {
343 m_log.Error("UNABLE TO REMOVE COMPLETED REQUEST"); 343 m_log.Error("[XML RPC MODULE]: UNABLE TO REMOVE COMPLETED REQUEST");
344 } 344 }
345 } 345 }
346 } 346 }
@@ -728,4 +728,4 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
728 return ReqID; 728 return ReqID;
729 } 729 }
730 } 730 }
731} 731} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs
index d68c683..4abc215 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Interregion/LocalInterregionComms.cs
@@ -260,7 +260,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
260 { 260 {
261 if (s.RegionInfo.RegionHandle == regionHandle) 261 if (s.RegionInfo.RegionHandle == regionHandle)
262 { 262 {
263 //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); 263 m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject");
264 if (isLocalCall) 264 if (isLocalCall)
265 { 265 {
266 // We need to make a local copy of the object 266 // We need to make a local copy of the object
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index 191e859..cabd51c 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -314,10 +314,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
314 { 314 {
315// m_log.DebugFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Requesting inventory item {0}", item.ID); 315// m_log.DebugFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Requesting inventory item {0}", item.ID);
316 316
317 UUID requestedItemId = item.ID;
318
317 item = m_InventoryService.GetItem(item); 319 item = m_InventoryService.GetItem(item);
318 320
319 if (null == item) 321 if (null == item)
320 m_log.ErrorFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Could not find item with id {0}", item.ID); 322 m_log.ErrorFormat(
323 "[LOCAL INVENTORY SERVICES CONNECTOR]: Could not find item with id {0}", requestedItemId);
321 324
322 return item; 325 return item;
323 } 326 }
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 381c8f7..2e30e09 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -276,7 +276,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
276 } 276 }
277 } 277 }
278 278
279 if (m_scene.AddRestoredSceneObject(sceneObject, true, false)) 279 if (!m_scene.AddRestoredSceneObject(sceneObject, true, false))
280 { 280 {
281 sceneObjectsLoadedCount++; 281 sceneObjectsLoadedCount++;
282 sceneObject.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, 0); 282 sceneObject.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, 0);
diff --git a/OpenSim/Region/Framework/Interfaces/IGroupsMessagingModule.cs b/OpenSim/Region/Framework/Interfaces/IGroupsMessagingModule.cs
new file mode 100644
index 0000000..f158236
--- /dev/null
+++ b/OpenSim/Region/Framework/Interfaces/IGroupsMessagingModule.cs
@@ -0,0 +1,73 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using OpenMetaverse;
29using OpenSim.Framework;
30
31namespace OpenSim.Region.Framework.Interfaces
32{
33 /// <summary>
34 /// Provide mechanisms for messaging groups.
35 /// </summary>
36 ///
37 /// TODO: Provide a mechanism for receiving group messages as well as sending them
38 ///
39 public interface IGroupsMessagingModule
40 {
41 /// <summary>
42 /// Start a group chat session.
43 /// </summary>
44 /// You must call this before calling SendMessageToGroup(). If a chat session for this group is already taking
45 /// place then the agent will added to that session.
46 /// <param name="agentID">
47 /// A UUID that represents the agent being added. If you are agentless (e.g. you are
48 /// a region module), then you can use any random ID.
49 /// </param>
50 /// <param name="groupID">
51 /// The ID for the group to join. Currently, the session ID used is identical to the
52 /// group ID.
53 /// </param>
54 /// <returns>
55 /// True if the chat session was started successfully, false otherwise.
56 /// </returns>
57 bool StartGroupChatSession(UUID agentID, UUID groupID);
58
59 /// <summary>
60 /// Send a message to an entire group.
61 /// </summary>
62 /// <param name="im">
63 /// The message itself. The fields that must be populated are
64 ///
65 /// imSessionID - Populate this with the group ID (session ID and group ID are currently identical)
66 /// fromAgentName - Populate this with whatever arbitrary name you want to show up in the chat dialog
67 /// message - The message itself
68 /// dialog - This must be (byte)InstantMessageDialog.SessionSend
69 /// </param>
70 /// <param name="groupID"></param>
71 void SendMessageToGroup(GridInstantMessage im, UUID groupID);
72 }
73} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs b/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
index 8980b2d..9683da0 100644
--- a/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
@@ -37,6 +37,37 @@ namespace OpenSim.Region.Framework.Interfaces
37 { 37 {
38 event NewGroupNotice OnNewGroupNotice; 38 event NewGroupNotice OnNewGroupNotice;
39 39
40 /// <summary>
41 /// Create a group
42 /// </summary>
43 /// <param name="remoteClient"></param>
44 /// <param name="name"></param>
45 /// <param name="charter"></param>
46 /// <param name="showInList"></param>
47 /// <param name="insigniaID"></param>
48 /// <param name="membershipFee"></param>
49 /// <param name="openEnrollment"></param>
50 /// <param name="allowPublish"></param>
51 /// <param name="maturePublish"></param>
52 /// <returns>The UUID of the created group</returns>
53 UUID CreateGroup(
54 IClientAPI remoteClient, string name, string charter, bool showInList, UUID insigniaID, int membershipFee,
55 bool openEnrollment, bool allowPublish, bool maturePublish);
56
57 /// <summary>
58 /// Get a group
59 /// </summary>
60 /// <param name="name">Name of the group</param>
61 /// <returns>The group's data. Null if there is no such group.</returns>
62 GroupRecord GetGroupRecord(string name);
63
64 /// <summary>
65 /// Get a group
66 /// </summary>
67 /// <param name="GroupID">ID of the group</param>
68 /// <returns>The group's data. Null if there is no such group.</returns>
69 GroupRecord GetGroupRecord(UUID GroupID);
70
40 void ActivateGroup(IClientAPI remoteClient, UUID groupID); 71 void ActivateGroup(IClientAPI remoteClient, UUID groupID);
41 List<GroupTitlesData> GroupTitlesRequest(IClientAPI remoteClient, UUID groupID); 72 List<GroupTitlesData> GroupTitlesRequest(IClientAPI remoteClient, UUID groupID);
42 List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID); 73 List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID);
@@ -51,7 +82,6 @@ namespace OpenSim.Region.Framework.Interfaces
51 void SetGroupAcceptNotices(IClientAPI remoteClient, UUID groupID, bool acceptNotices, bool listInProfile); 82 void SetGroupAcceptNotices(IClientAPI remoteClient, UUID groupID, bool acceptNotices, bool listInProfile);
52 83
53 void GroupTitleUpdate(IClientAPI remoteClient, UUID GroupID, UUID TitleRoleID); 84 void GroupTitleUpdate(IClientAPI remoteClient, UUID GroupID, UUID TitleRoleID);
54 UUID CreateGroup(IClientAPI remoteClient, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish);
55 85
56 GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID GroupID); 86 GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID GroupID);
57 string GetGroupTitle(UUID avatarID); 87 string GetGroupTitle(UUID avatarID);
@@ -64,7 +94,6 @@ namespace OpenSim.Region.Framework.Interfaces
64 void LeaveGroupRequest(IClientAPI remoteClient, UUID GroupID); 94 void LeaveGroupRequest(IClientAPI remoteClient, UUID GroupID);
65 void EjectGroupMemberRequest(IClientAPI remoteClient, UUID GroupID, UUID EjecteeID); 95 void EjectGroupMemberRequest(IClientAPI remoteClient, UUID GroupID, UUID EjecteeID);
66 void InviteGroupRequest(IClientAPI remoteClient, UUID GroupID, UUID InviteeID, UUID RoleID); 96 void InviteGroupRequest(IClientAPI remoteClient, UUID GroupID, UUID InviteeID, UUID RoleID);
67 GroupRecord GetGroupRecord(UUID GroupID);
68 void NotifyChange(UUID GroupID); 97 void NotifyChange(UUID GroupID);
69 } 98 }
70} 99}
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 57e1c37..4365ece 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -107,21 +107,24 @@ namespace OpenSim.Region.Framework.Scenes
107 public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; 107 public event OnSetRootAgentSceneDelegate OnSetRootAgentScene;
108 108
109 /// <summary> 109 /// <summary>
110 /// Called when an object is touched/grabbed. 110 /// Fired when an object is touched/grabbed.
111 /// </summary> 111 /// </summary>
112 /// The originalID is the local ID of the part that was actually touched. The localID itself is always that of 112 /// The originalID is the local ID of the part that was actually touched. The localID itself is always that of
113 /// the root part. 113 /// the root part.
114 public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
115 public event ObjectGrabDelegate OnObjectGrab; 114 public event ObjectGrabDelegate OnObjectGrab;
115 public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs);
116 116
117 public event ObjectGrabDelegate OnObjectGrabbing; 117 public event ObjectGrabDelegate OnObjectGrabbing;
118 public event ObjectDeGrabDelegate OnObjectDeGrab; 118 public event ObjectDeGrabDelegate OnObjectDeGrab;
119 public event ScriptResetDelegate OnScriptReset; 119 public event ScriptResetDelegate OnScriptReset;
120 120
121 public event OnPermissionErrorDelegate OnPermissionError; 121 public event OnPermissionErrorDelegate OnPermissionError;
122 122
123 public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource); 123 /// <summary>
124 /// Fired when a new script is created.
125 /// </summary>
124 public event NewRezScript OnRezScript; 126 public event NewRezScript OnRezScript;
127 public delegate void NewRezScript(uint localID, UUID itemID, string script, int startParam, bool postOnRez, string engine, int stateSource);
125 128
126 public delegate void RemoveScript(uint localID, UUID itemID); 129 public delegate void RemoveScript(uint localID, UUID itemID);
127 public event RemoveScript OnRemoveScript; 130 public event RemoveScript OnRemoveScript;
@@ -163,38 +166,35 @@ namespace OpenSim.Region.Framework.Scenes
163 166
164 public delegate void ClientClosed(UUID clientID, Scene scene); 167 public delegate void ClientClosed(UUID clientID, Scene scene);
165 168
166 public event ClientClosed OnClientClosed; 169 public event ClientClosed OnClientClosed;
167
168 public delegate void ScriptChangedEvent(uint localID, uint change);
169 170
171 /// <summary>
172 /// This is fired when a scene object property that a script might be interested in (such as color, scale or
173 /// inventory) changes. Only enough information is sent for the LSL changed event
174 /// (see http://lslwiki.net/lslwiki/wakka.php?wakka=changed)
175 /// </summary>
170 public event ScriptChangedEvent OnScriptChangedEvent; 176 public event ScriptChangedEvent OnScriptChangedEvent;
177 public delegate void ScriptChangedEvent(uint localID, uint change);
171 178
172 public delegate void ScriptControlEvent(uint localID, UUID item, UUID avatarID, uint held, uint changed); 179 public delegate void ScriptControlEvent(uint localID, UUID item, UUID avatarID, uint held, uint changed);
173
174 public event ScriptControlEvent OnScriptControlEvent; 180 public event ScriptControlEvent OnScriptControlEvent;
175 181
176 public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos); 182 public delegate void ScriptAtTargetEvent(uint localID, uint handle, Vector3 targetpos, Vector3 atpos);
177
178 public event ScriptAtTargetEvent OnScriptAtTargetEvent; 183 public event ScriptAtTargetEvent OnScriptAtTargetEvent;
179 184
180 public delegate void ScriptNotAtTargetEvent(uint localID); 185 public delegate void ScriptNotAtTargetEvent(uint localID);
181
182 public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent; 186 public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
183 187
184 public delegate void ScriptAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion atrot); 188 public delegate void ScriptAtRotTargetEvent(uint localID, uint handle, Quaternion targetrot, Quaternion atrot);
185
186 public event ScriptAtRotTargetEvent OnScriptAtRotTargetEvent; 189 public event ScriptAtRotTargetEvent OnScriptAtRotTargetEvent;
187 190
188 public delegate void ScriptNotAtRotTargetEvent(uint localID); 191 public delegate void ScriptNotAtRotTargetEvent(uint localID);
189
190 public event ScriptNotAtRotTargetEvent OnScriptNotAtRotTargetEvent; 192 public event ScriptNotAtRotTargetEvent OnScriptNotAtRotTargetEvent;
191 193
192 public delegate void ScriptColliding(uint localID, ColliderArgs colliders); 194 public delegate void ScriptColliding(uint localID, ColliderArgs colliders);
193
194 public event ScriptColliding OnScriptColliderStart; 195 public event ScriptColliding OnScriptColliderStart;
195 public event ScriptColliding OnScriptColliding; 196 public event ScriptColliding OnScriptColliding;
196 public event ScriptColliding OnScriptCollidingEnd; 197 public event ScriptColliding OnScriptCollidingEnd;
197
198 public event ScriptColliding OnScriptLandColliderStart; 198 public event ScriptColliding OnScriptLandColliderStart;
199 public event ScriptColliding OnScriptLandColliding; 199 public event ScriptColliding OnScriptLandColliding;
200 public event ScriptColliding OnScriptLandColliderEnd; 200 public event ScriptColliding OnScriptLandColliderEnd;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 4f2b446..f556b35 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -438,29 +438,31 @@ namespace OpenSim.Region.Framework.Scenes
438 itemCopy.InvType = item.InvType; 438 itemCopy.InvType = item.InvType;
439 itemCopy.Folder = recipientFolderId; 439 itemCopy.Folder = recipientFolderId;
440 440
441 if (Permissions.PropagatePermissions()) 441 if (Permissions.PropagatePermissions() && recipient != senderId)
442 { 442 {
443 // First, make sore base is limited to the next perms
444 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
445 // By default, current equals base
446 itemCopy.CurrentPermissions = itemCopy.BasePermissions;
447
448 // If this is an object, replace current perms
449 // with folded perms
443 if (item.InvType == (int)InventoryType.Object) 450 if (item.InvType == (int)InventoryType.Object)
444 { 451 {
445 itemCopy.BasePermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer); 452 itemCopy.CurrentPermissions &= ~(uint)(PermissionMask.Copy | PermissionMask.Modify | PermissionMask.Transfer);
446 itemCopy.BasePermissions |= (item.CurrentPermissions & 7) << 13; 453 itemCopy.CurrentPermissions |= (item.CurrentPermissions & 7) << 13;
447 }
448 else
449 {
450 itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions;
451 } 454 }
452 455
453 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 456 // Ensure there is no escalation
454 if ((item.CurrentPermissions & 8) != 0) // Propagate slam bit 457 itemCopy.CurrentPermissions &= item.NextPermissions;
455 { 458
456 itemCopy.BasePermissions &= item.NextPermissions; 459 // Need slam bit on xfer
457 itemCopy.CurrentPermissions = itemCopy.BasePermissions; 460 itemCopy.CurrentPermissions |= 8;
458 itemCopy.CurrentPermissions |= 8;
459 }
460 461
461 itemCopy.NextPermissions = item.NextPermissions; 462 itemCopy.NextPermissions = item.NextPermissions;
462 itemCopy.EveryOnePermissions = item.EveryOnePermissions & item.NextPermissions; 463
463 itemCopy.GroupPermissions = item.GroupPermissions & item.NextPermissions; 464 itemCopy.EveryOnePermissions = 0;
465 itemCopy.GroupPermissions = 0;
464 } 466 }
465 else 467 else
466 { 468 {
@@ -531,7 +533,6 @@ namespace OpenSim.Region.Framework.Scenes
531 return null; 533 return null;
532 } 534 }
533 535
534
535 if (recipientParentFolderId == UUID.Zero) 536 if (recipientParentFolderId == UUID.Zero)
536 { 537 {
537 InventoryFolderBase recipientRootFolder = InventoryService.GetRootFolder(recipientId); 538 InventoryFolderBase recipientRootFolder = InventoryService.GetRootFolder(recipientId);
@@ -910,12 +911,12 @@ namespace OpenSim.Region.Framework.Scenes
910 911
911 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) 912 if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions())
912 { 913 {
914 agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions;
913 if (taskItem.InvType == (int)InventoryType.Object) 915 if (taskItem.InvType == (int)InventoryType.Object)
914 agentItem.BasePermissions = taskItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); 916 agentItem.CurrentPermissions = agentItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13);
915 else 917 agentItem.CurrentPermissions = agentItem.BasePermissions ;
916 agentItem.BasePermissions = taskItem.BasePermissions; 918
917 agentItem.BasePermissions &= taskItem.NextPermissions; 919 agentItem.CurrentPermissions |= 8;
918 agentItem.CurrentPermissions = agentItem.BasePermissions | 8;
919 agentItem.NextPermissions = taskItem.NextPermissions; 920 agentItem.NextPermissions = taskItem.NextPermissions;
920 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions; 921 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions;
921 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; 922 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions;
@@ -2075,7 +2076,10 @@ namespace OpenSim.Region.Framework.Scenes
2075 group.RootPart.IsAttachment = true; 2076 group.RootPart.IsAttachment = true;
2076 } 2077 }
2077 2078
2078 AddNewSceneObject(group, true); 2079 // If we're rezzing an attachment then don't ask AddNewSceneObject() to update the client since
2080 // we'll be doing that later on. Scheduling more than one full update during the attachment
2081 // process causes some clients to fail to display the attachment properly.
2082 AddNewSceneObject(group, true, !attachment);
2079 2083
2080 // m_log.InfoFormat("ray end point for inventory rezz is {0} {1} {2} ", RayEnd.X, RayEnd.Y, RayEnd.Z); 2084 // m_log.InfoFormat("ray end point for inventory rezz is {0} {1} {2} ", RayEnd.X, RayEnd.Y, RayEnd.Z);
2081 // if attachment we set it's asset id so object updates can reflect that 2085 // if attachment we set it's asset id so object updates can reflect that
@@ -2445,6 +2449,8 @@ namespace OpenSim.Region.Framework.Scenes
2445 return; 2449 return;
2446 } 2450 }
2447 2451
2452 m_log.DebugFormat("[SCENE INVENTORY]: {0} {1} IsAttachment={2}", att.Name, att.LocalId, att.IsAttachment);
2453 Console.WriteLine("HERE X");
2448 ScenePresence presence; 2454 ScenePresence presence;
2449 if (TryGetAvatar(remoteClient.AgentId, out presence)) 2455 if (TryGetAvatar(remoteClient.AgentId, out presence))
2450 { 2456 {
@@ -2452,9 +2458,12 @@ namespace OpenSim.Region.Framework.Scenes
2452 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); 2458 InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId);
2453 item = InventoryService.GetItem(item); 2459 item = InventoryService.GetItem(item);
2454 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); 2460 presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/);
2461 Console.WriteLine("HERE Y");
2455 2462
2456 if (m_AvatarFactory != null) 2463 if (m_AvatarFactory != null)
2457 m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); 2464 m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
2465
2466 Console.WriteLine("HERE Z");
2458 } 2467 }
2459 } 2468 }
2460 2469
@@ -2637,4 +2646,4 @@ namespace OpenSim.Region.Framework.Scenes
2637 m_sceneGraph.LinkObjects(root, children); 2646 m_sceneGraph.LinkObjects(root, children);
2638 } 2647 }
2639 } 2648 }
2640} 2649} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index ac04dc7..d8e604f 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -124,6 +124,7 @@ namespace OpenSim.Region.Framework.Scenes
124 { 124 {
125 if (((SceneObjectGroup)ent).LocalId == primLocalID) 125 if (((SceneObjectGroup)ent).LocalId == primLocalID)
126 { 126 {
127 m_log.DebugFormat("[SCENE]: Received full update request for {0} from {1}", primLocalID, remoteClient.Name);
127 ((SceneObjectGroup)ent).SendFullUpdateToClient(remoteClient); 128 ((SceneObjectGroup)ent).SendFullUpdateToClient(remoteClient);
128 return; 129 return;
129 } 130 }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 637ebff..f8ca047 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1850,9 +1850,31 @@ namespace OpenSim.Region.Framework.Scenes
1850 /// true if the object was added, false if an object with the same uuid was already in the scene 1850 /// true if the object was added, false if an object with the same uuid was already in the scene
1851 /// </returns> 1851 /// </returns>
1852 public bool AddRestoredSceneObject( 1852 public bool AddRestoredSceneObject(
1853 SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates)
1854 {
1855 return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, sendClientUpdates);
1856 }
1857
1858 /// <summary>
1859 /// Add an object into the scene that has come from storage
1860 /// </summary>
1861 ///
1862 /// <param name="sceneObject"></param>
1863 /// <param name="attachToBackup">
1864 /// If true, changes to the object will be reflected in its persisted data
1865 /// If false, the persisted data will not be changed even if the object in the scene is changed
1866 /// </param>
1867 /// <param name="alreadyPersisted">
1868 /// If true, we won't persist this object until it changes
1869 /// If false, we'll persist this object immediately
1870 /// </param>
1871 /// <returns>
1872 /// true if the object was added, false if an object with the same uuid was already in the scene
1873 /// </returns>
1874 public bool AddRestoredSceneObject(
1853 SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) 1875 SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted)
1854 { 1876 {
1855 return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted); 1877 return AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, true);
1856 } 1878 }
1857 1879
1858 /// <summary> 1880 /// <summary>
@@ -1886,7 +1908,7 @@ namespace OpenSim.Region.Framework.Scenes
1886 } 1908 }
1887 1909
1888 /// <summary> 1910 /// <summary>
1889 /// Delete every object from the scene 1911 /// Delete every object from the scene. This does not include attachments worn by avatars.
1890 /// </summary> 1912 /// </summary>
1891 public void DeleteAllSceneObjects() 1913 public void DeleteAllSceneObjects()
1892 { 1914 {
@@ -1897,7 +1919,11 @@ namespace OpenSim.Region.Framework.Scenes
1897 foreach (EntityBase e in entities) 1919 foreach (EntityBase e in entities)
1898 { 1920 {
1899 if (e is SceneObjectGroup) 1921 if (e is SceneObjectGroup)
1900 DeleteSceneObject((SceneObjectGroup)e, false); 1922 {
1923 SceneObjectGroup sog = (SceneObjectGroup)e;
1924 if (!sog.IsAttachment)
1925 DeleteSceneObject((SceneObjectGroup)e, false);
1926 }
1901 } 1927 }
1902 } 1928 }
1903 } 1929 }
@@ -2461,7 +2487,7 @@ namespace OpenSim.Region.Framework.Scenes
2461 /// <returns></returns> 2487 /// <returns></returns>
2462 public bool IncomingCreateObject(ISceneObject sog) 2488 public bool IncomingCreateObject(ISceneObject sog)
2463 { 2489 {
2464 //m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); 2490 m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted);
2465 SceneObjectGroup newObject; 2491 SceneObjectGroup newObject;
2466 try 2492 try
2467 { 2493 {
@@ -2533,10 +2559,12 @@ namespace OpenSim.Region.Framework.Scenes
2533 2559
2534 if (sceneObject.IsAttachmentCheckFull()) // Attachment 2560 if (sceneObject.IsAttachmentCheckFull()) // Attachment
2535 { 2561 {
2562 m_log.DebugFormat("[SCENE]: Adding attachment {0} {1}", sceneObject.Name, sceneObject.LocalId);
2563
2536 sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); 2564 sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez);
2537 sceneObject.RootPart.AddFlag(PrimFlags.Phantom); 2565 sceneObject.RootPart.AddFlag(PrimFlags.Phantom);
2538 2566
2539 AddRestoredSceneObject(sceneObject, false, false); 2567 AddRestoredSceneObject(sceneObject, false, false, false);
2540 2568
2541 // Handle attachment special case 2569 // Handle attachment special case
2542 SceneObjectPart RootPrim = sceneObject.RootPart; 2570 SceneObjectPart RootPrim = sceneObject.RootPart;
@@ -2544,6 +2572,8 @@ namespace OpenSim.Region.Framework.Scenes
2544 // Fix up attachment Parent Local ID 2572 // Fix up attachment Parent Local ID
2545 ScenePresence sp = GetScenePresence(sceneObject.OwnerID); 2573 ScenePresence sp = GetScenePresence(sceneObject.OwnerID);
2546 2574
2575 Console.WriteLine("AAAA");
2576
2547 //uint parentLocalID = 0; 2577 //uint parentLocalID = 0;
2548 if (sp != null) 2578 if (sp != null)
2549 { 2579 {
@@ -2562,20 +2592,25 @@ namespace OpenSim.Region.Framework.Scenes
2562 //grp.SetFromAssetID(grp.RootPart.LastOwnerID); 2592 //grp.SetFromAssetID(grp.RootPart.LastOwnerID);
2563 m_log.DebugFormat( 2593 m_log.DebugFormat(
2564 "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); 2594 "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition);
2565 2595
2596 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2566 AttachObject( 2597 AttachObject(
2567 sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); 2598 sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false);
2568 RootPrim.RemFlag(PrimFlags.TemporaryOnRez); 2599
2569 grp.SendGroupFullUpdate(); 2600 //grp.SendGroupFullUpdate();
2570 } 2601 }
2571 else 2602 else
2572 { 2603 {
2573 RootPrim.RemFlag(PrimFlags.TemporaryOnRez); 2604 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2574 RootPrim.AddFlag(PrimFlags.TemporaryOnRez); 2605 RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
2575 } 2606 }
2607
2608 Console.WriteLine("BBBB");
2576 } 2609 }
2577 else 2610 else
2578 { 2611 {
2612 m_log.DebugFormat("[SCENE]: Adding ordinary object {0} {1}", sceneObject.Name, sceneObject.LocalId);
2613
2579 AddRestoredSceneObject(sceneObject, true, false); 2614 AddRestoredSceneObject(sceneObject, true, false);
2580 2615
2581 if (!Permissions.CanObjectEntry(sceneObject.UUID, 2616 if (!Permissions.CanObjectEntry(sceneObject.UUID,
diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
index 2f6a0db..50feb17 100644
--- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs
@@ -1383,7 +1383,9 @@ namespace OpenSim.Region.Framework.Scenes
1383 // now we have a child agent in this region. Request all interesting data about other (root) agents 1383 // now we have a child agent in this region. Request all interesting data about other (root) agents
1384 agent.SendInitialFullUpdateToAllClients(); 1384 agent.SendInitialFullUpdateToAllClients();
1385 1385
1386 Console.WriteLine("SCS 1");
1386 agent.CrossAttachmentsIntoNewRegion(neighbourHandle, true); 1387 agent.CrossAttachmentsIntoNewRegion(neighbourHandle, true);
1388 Console.WriteLine("SCS 2");
1387 1389
1388 // m_scene.SendKillObject(m_localId); 1390 // m_scene.SendKillObject(m_localId);
1389 1391
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index ad24160..fa3c5eb 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -216,11 +216,15 @@ namespace OpenSim.Region.Framework.Scenes
216 /// If true, we won't persist this object until it changes 216 /// If true, we won't persist this object until it changes
217 /// If false, we'll persist this object immediately 217 /// If false, we'll persist this object immediately
218 /// </param> 218 /// </param>
219 /// <param name="sendClientUpdate">
220 /// If true, we send updates to the client to tell it about this object
221 /// If false, we leave it up to the caller to do this
222 /// </param>
219 /// <returns> 223 /// <returns>
220 /// true if the object was added, false if an object with the same uuid was already in the scene 224 /// true if the object was added, false if an object with the same uuid was already in the scene
221 /// </returns> 225 /// </returns>
222 protected internal bool AddRestoredSceneObject( 226 protected internal bool AddRestoredSceneObject(
223 SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) 227 SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates)
224 { 228 {
225 if (!alreadyPersisted) 229 if (!alreadyPersisted)
226 { 230 {
@@ -228,8 +232,29 @@ namespace OpenSim.Region.Framework.Scenes
228 sceneObject.HasGroupChanged = true; 232 sceneObject.HasGroupChanged = true;
229 } 233 }
230 234
231 return AddSceneObject(sceneObject, attachToBackup, true); 235 return AddSceneObject(sceneObject, attachToBackup, sendClientUpdates);
232 } 236 }
237
238// /// <summary>
239// /// Add an object into the scene that has come from storage
240// /// </summary>
241// /// <param name="sceneObject"></param>
242// /// <param name="attachToBackup">
243// /// If true, changes to the object will be reflected in its persisted data
244// /// If false, the persisted data will not be changed even if the object in the scene is changed
245// /// </param>
246// /// <param name="alreadyPersisted">
247// /// If true, we won't persist this object until it changes
248// /// If false, we'll persist this object immediately
249// /// </param>
250// /// <returns>
251// /// true if the object was added, false if an object with the same uuid was already in the scene
252// /// </returns>
253// protected internal bool AddRestoredSceneObject(
254// SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted)
255// {
256// AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, true);
257// }
233 258
234 /// <summary> 259 /// <summary>
235 /// Add a newly created object to the scene. This will both update the scene, and send information about the 260 /// Add a newly created object to the scene. This will both update the scene, and send information about the
@@ -536,7 +561,6 @@ namespace OpenSim.Region.Framework.Scenes
536// m_log.DebugFormat( 561// m_log.DebugFormat(
537// "[SCENE GRAPH]: Retrieved single object {0} for attachment to {1} on point {2}", 562// "[SCENE GRAPH]: Retrieved single object {0} for attachment to {1} on point {2}",
538// objatt.Name, remoteClient.Name, AttachmentPt); 563// objatt.Name, remoteClient.Name, AttachmentPt);
539
540 if (objatt != null) 564 if (objatt != null)
541 { 565 {
542 bool tainted = false; 566 bool tainted = false;
@@ -612,11 +636,13 @@ namespace OpenSim.Region.Framework.Scenes
612 protected internal bool AttachObject( 636 protected internal bool AttachObject(
613 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent) 637 IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, Quaternion rot, Vector3 attachPos, bool silent)
614 { 638 {
639 Console.WriteLine("HERE A");
615 SceneObjectGroup group = GetGroupByPrim(objectLocalID); 640 SceneObjectGroup group = GetGroupByPrim(objectLocalID);
616 if (group != null) 641 if (group != null)
617 { 642 {
618 if (m_parentScene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId)) 643 if (m_parentScene.Permissions.CanTakeObject(group.UUID, remoteClient.AgentId))
619 { 644 {
645 Console.WriteLine("HERE -1");
620 // If the attachment point isn't the same as the one previously used 646 // If the attachment point isn't the same as the one previously used
621 // set it's offset position = 0 so that it appears on the attachment point 647 // set it's offset position = 0 so that it appears on the attachment point
622 // and not in a weird location somewhere unknown. 648 // and not in a weird location somewhere unknown.
@@ -655,9 +681,12 @@ namespace OpenSim.Region.Framework.Scenes
655 itemId = group.GetFromItemID(); 681 itemId = group.GetFromItemID();
656 } 682 }
657 683
684 Console.WriteLine("HERE 0");
658 m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group); 685 m_parentScene.AttachObject(remoteClient, AttachmentPt, itemId, group);
659 686
687 Console.WriteLine("HERE 1");
660 group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent); 688 group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos, silent);
689 Console.WriteLine("HERE 2");
661 // In case it is later dropped again, don't let 690 // In case it is later dropped again, don't let
662 // it get cleaned up 691 // it get cleaned up
663 // 692 //
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index c14b39a..ba3fde7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1494,6 +1494,10 @@ namespace OpenSim.Region.Framework.Scenes
1494 1494
1495 public void SendFullUpdateToClient(IClientAPI remoteClient) 1495 public void SendFullUpdateToClient(IClientAPI remoteClient)
1496 { 1496 {
1497 if (IsAttachment)
1498 m_log.DebugFormat(
1499 "[SOG]: Sending full update to client {0} for {1} {2}", remoteClient.Name, Name, LocalId);
1500
1497 SendPartFullUpdate(remoteClient, RootPart, m_scene.Permissions.GenerateClientFlags(remoteClient.AgentId, RootPart.UUID)); 1501 SendPartFullUpdate(remoteClient, RootPart, m_scene.Permissions.GenerateClientFlags(remoteClient.AgentId, RootPart.UUID));
1498 1502
1499 lock (m_parts) 1503 lock (m_parts)
@@ -1513,8 +1517,9 @@ namespace OpenSim.Region.Framework.Scenes
1513 /// <param name="part"></param> 1517 /// <param name="part"></param>
1514 internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part, uint clientFlags) 1518 internal void SendPartFullUpdate(IClientAPI remoteClient, SceneObjectPart part, uint clientFlags)
1515 { 1519 {
1516// m_log.DebugFormat( 1520 if (IsAttachment)
1517// "[SOG]: Sendinging part full update to {0} for {1} {2}", remoteClient.Name, part.Name, part.LocalId); 1521 m_log.DebugFormat(
1522 "[SOG]: Sending part full update to {0} for {1} {2}", remoteClient.Name, part.Name, part.LocalId);
1518 1523
1519 if (m_rootPart.UUID == part.UUID) 1524 if (m_rootPart.UUID == part.UUID)
1520 { 1525 {
@@ -1994,7 +1999,8 @@ namespace OpenSim.Region.Framework.Scenes
1994 1999
1995 public void ScheduleFullUpdateToAvatar(ScenePresence presence) 2000 public void ScheduleFullUpdateToAvatar(ScenePresence presence)
1996 { 2001 {
1997// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1} just to avatar {2}", Name, UUID, presence.Name); 2002 if (IsAttachment)
2003 m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1} just to avatar {2}", Name, UUID, presence.Name);
1998 2004
1999 RootPart.AddFullUpdateToAvatar(presence); 2005 RootPart.AddFullUpdateToAvatar(presence);
2000 2006
@@ -2026,7 +2032,8 @@ namespace OpenSim.Region.Framework.Scenes
2026 /// </summary> 2032 /// </summary>
2027 public void ScheduleGroupForFullUpdate() 2033 public void ScheduleGroupForFullUpdate()
2028 { 2034 {
2029// m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, UUID); 2035 if (IsAttachment)
2036 m_log.DebugFormat("[SOG]: Scheduling full update for {0} {1}", Name, UUID);
2030 2037
2031 checkAtTargets(); 2038 checkAtTargets();
2032 RootPart.ScheduleFullUpdate(); 2039 RootPart.ScheduleFullUpdate();
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index a85a4b3..ffbb427 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1259,16 +1259,17 @@ namespace OpenSim.Region.Framework.Scenes
1259 /// Tell all scene presences that they should send updates for this part to their clients 1259 /// Tell all scene presences that they should send updates for this part to their clients
1260 /// </summary> 1260 /// </summary>
1261 public void AddFullUpdateToAllAvatars() 1261 public void AddFullUpdateToAllAvatars()
1262 { 1262 {
1263 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); 1263 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences();
1264 for (int i = 0; i < avatars.Length; i++) 1264 for (int i = 0; i < avatars.Length; i++)
1265 { 1265 AddFullUpdateToAvatar(avatars[i]);
1266 avatars[i].SceneViewer.QueuePartForUpdate(this);
1267 }
1268 } 1266 }
1269 1267
1270 public void AddFullUpdateToAvatar(ScenePresence presence) 1268 public void AddFullUpdateToAvatar(ScenePresence presence)
1271 { 1269 {
1270 if (IsAttachment)
1271 m_log.DebugFormat("AddFullUpdateToAllAvatar() {0} for {1} {2}", presence.Name, Name, LocalId);
1272
1272 presence.SceneViewer.QueuePartForUpdate(this); 1273 presence.SceneViewer.QueuePartForUpdate(this);
1273 } 1274 }
1274 1275
@@ -1287,13 +1288,14 @@ namespace OpenSim.Region.Framework.Scenes
1287 { 1288 {
1288 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); 1289 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences();
1289 for (int i = 0; i < avatars.Length; i++) 1290 for (int i = 0; i < avatars.Length; i++)
1290 { 1291 AddTerseUpdateToAvatar(avatars[i]);
1291 avatars[i].SceneViewer.QueuePartForUpdate(this);
1292 }
1293 } 1292 }
1294 1293
1295 public void AddTerseUpdateToAvatar(ScenePresence presence) 1294 public void AddTerseUpdateToAvatar(ScenePresence presence)
1296 { 1295 {
1296 if (IsAttachment)
1297 m_log.DebugFormat("AddTerseUpdateToAvatar() {0} for {1} {2}", presence.Name, Name, LocalId);
1298
1297 presence.SceneViewer.QueuePartForUpdate(this); 1299 presence.SceneViewer.QueuePartForUpdate(this);
1298 } 1300 }
1299 1301
@@ -2727,7 +2729,8 @@ namespace OpenSim.Region.Framework.Scenes
2727 /// </summary> 2729 /// </summary>
2728 public void ScheduleFullUpdate() 2730 public void ScheduleFullUpdate()
2729 { 2731 {
2730// m_log.DebugFormat("[SCENE OBJECT PART]: Scheduling full update for {0} {1}", Name, LocalId); 2732 if (IsAttachment)
2733 m_log.DebugFormat("[SOP]: Scheduling full update for {0} {1}", Name, LocalId);
2731 2734
2732 if (m_parentGroup != null) 2735 if (m_parentGroup != null)
2733 { 2736 {
@@ -2840,6 +2843,10 @@ namespace OpenSim.Region.Framework.Scenes
2840 /// <param name="remoteClient"></param> 2843 /// <param name="remoteClient"></param>
2841 public void SendFullUpdate(IClientAPI remoteClient, uint clientFlags) 2844 public void SendFullUpdate(IClientAPI remoteClient, uint clientFlags)
2842 { 2845 {
2846 if (IsAttachment)
2847 m_log.DebugFormat(
2848 "[SCENE OBJECT PART]: Sending part full update to {0} for {1} {2}", remoteClient.Name, Name, LocalId);
2849
2843 m_parentGroup.SendPartFullUpdate(remoteClient, this, clientFlags); 2850 m_parentGroup.SendPartFullUpdate(remoteClient, this, clientFlags);
2844 } 2851 }
2845 2852
@@ -2848,6 +2855,10 @@ namespace OpenSim.Region.Framework.Scenes
2848 /// </summary> 2855 /// </summary>
2849 public void SendFullUpdateToAllClients() 2856 public void SendFullUpdateToAllClients()
2850 { 2857 {
2858 if (IsAttachment)
2859 m_log.DebugFormat(
2860 "[SCENE OBJECT PART]: Sending full update for {0} {1} for all clients", Name, LocalId);
2861
2851 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); 2862 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences();
2852 for (int i = 0; i < avatars.Length; i++) 2863 for (int i = 0; i < avatars.Length; i++)
2853 { 2864 {
@@ -2859,6 +2870,10 @@ namespace OpenSim.Region.Framework.Scenes
2859 2870
2860 public void SendFullUpdateToAllClientsExcept(UUID agentID) 2871 public void SendFullUpdateToAllClientsExcept(UUID agentID)
2861 { 2872 {
2873 if (IsAttachment)
2874 m_log.DebugFormat(
2875 "[SCENE OBJECT PART]: Sending full update for {0} {1} to all clients except {2}", Name, LocalId, agentID);
2876
2862 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences(); 2877 ScenePresence[] avatars = m_parentGroup.Scene.GetScenePresences();
2863 for (int i = 0; i < avatars.Length; i++) 2878 for (int i = 0; i < avatars.Length; i++)
2864 { 2879 {
@@ -2965,6 +2980,9 @@ namespace OpenSim.Region.Framework.Scenes
2965 { 2980 {
2966 if (m_updateFlag == 2) // is a new prim, just created/reloaded or has major changes 2981 if (m_updateFlag == 2) // is a new prim, just created/reloaded or has major changes
2967 { 2982 {
2983 if (IsAttachment)
2984 m_log.DebugFormat("[SOP]: Sending scheduled full update for {0} {1}", Name, LocalId);
2985
2968 AddFullUpdateToAllAvatars(); 2986 AddFullUpdateToAllAvatars();
2969 ClearUpdateSchedule(); 2987 ClearUpdateSchedule();
2970 } 2988 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index a555eae..21ca1de 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -638,7 +638,6 @@ namespace OpenSim.Region.Framework.Scenes
638 m_items[item.ItemID] = item; 638 m_items[item.ItemID] = item;
639 m_inventorySerial++; 639 m_inventorySerial++;
640 m_part.TriggerScriptChangedEvent(Changed.INVENTORY); 640 m_part.TriggerScriptChangedEvent(Changed.INVENTORY);
641
642 HasInventoryChanged = true; 641 HasInventoryChanged = true;
643 m_part.ParentGroup.HasGroupChanged = true; 642 m_part.ParentGroup.HasGroupChanged = true;
644 643
diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs
index e4296ef..6f2bef9 100644
--- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs
@@ -27,6 +27,7 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection;
30using OpenMetaverse; 31using OpenMetaverse;
31using log4net; 32using log4net;
32using OpenSim.Framework; 33using OpenSim.Framework;
@@ -39,6 +40,8 @@ namespace OpenSim.Region.Framework.Scenes
39{ 40{
40 public class SceneViewer : ISceneViewer 41 public class SceneViewer : ISceneViewer
41 { 42 {
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44
42 protected ScenePresence m_presence; 45 protected ScenePresence m_presence;
43 protected UpdateQueue m_partsUpdateQueue = new UpdateQueue(); 46 protected UpdateQueue m_partsUpdateQueue = new UpdateQueue();
44 protected Queue<SceneObjectGroup> m_pendingObjects; 47 protected Queue<SceneObjectGroup> m_pendingObjects;
@@ -60,6 +63,9 @@ namespace OpenSim.Region.Framework.Scenes
60 /// <param name="part"></param> 63 /// <param name="part"></param>
61 public void QueuePartForUpdate(SceneObjectPart part) 64 public void QueuePartForUpdate(SceneObjectPart part)
62 { 65 {
66 if (part.IsAttachment)
67 m_log.DebugFormat("[SCENE VIEWER]: Queueing part {0} {1} for update", part.Name, part.LocalId);
68
63 lock (m_partsUpdateQueue) 69 lock (m_partsUpdateQueue)
64 { 70 {
65 m_partsUpdateQueue.Enqueue(part); 71 m_partsUpdateQueue.Enqueue(part);
@@ -134,7 +140,7 @@ namespace OpenSim.Region.Framework.Scenes
134 } 140 }
135 else if (update.LastTerseUpdateTime <= part.TimeStampTerse) 141 else if (update.LastTerseUpdateTime <= part.TimeStampTerse)
136 { 142 {
137// m_log.DebugFormat( 143// m_log.DebugFormat(AddFullUpdateToAvatar
138// "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", 144// "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}",
139// part.Name, part.UUID, part.TimeStampTerse); 145// part.Name, part.UUID, part.TimeStampTerse);
140 146
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs
index 00fe5df..06aad91 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs
@@ -28,41 +28,30 @@
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30using System.Reflection; 30using System.Reflection;
31
32
33using log4net; 31using log4net;
34using Mono.Addins; 32using Mono.Addins;
35using Nini.Config; 33using Nini.Config;
36
37using OpenMetaverse; 34using OpenMetaverse;
38using OpenMetaverse.StructuredData; 35using OpenMetaverse.StructuredData;
39
40using OpenSim.Framework; 36using OpenSim.Framework;
41using OpenSim.Region.CoreModules.Framework.EventQueue; 37using OpenSim.Region.CoreModules.Framework.EventQueue;
42using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
43using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
44 40
45
46using Caps = OpenSim.Framework.Capabilities.Caps; 41using Caps = OpenSim.Framework.Capabilities.Caps;
47 42
48namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups 43namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
49{ 44{
50 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] 45 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
51 public class GroupsMessagingModule : ISharedRegionModule 46 public class GroupsMessagingModule : ISharedRegionModule, IGroupsMessagingModule
52 { 47 {
53
54 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
55 49
56 private List<Scene> m_sceneList = new List<Scene>(); 50 private List<Scene> m_sceneList = new List<Scene>();
57 51
58 private IMessageTransferModule m_msgTransferModule = null; 52 private IMessageTransferModule m_msgTransferModule = null;
59 53
60 private IGroupsModule m_groupsModule = null; 54 private IGroupsServicesConnector m_groupData = null;
61
62 // TODO: Move this off to the Groups Server
63 public Dictionary<Guid, List<Guid>> m_agentsInGroupSession = new Dictionary<Guid, List<Guid>>();
64 public Dictionary<Guid, List<Guid>> m_agentsDroppedSession = new Dictionary<Guid, List<Guid>>();
65
66 55
67 // Config Options 56 // Config Options
68 private bool m_groupMessagingEnabled = false; 57 private bool m_groupMessagingEnabled = false;
@@ -108,8 +97,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
108 97
109 public void AddRegion(Scene scene) 98 public void AddRegion(Scene scene)
110 { 99 {
111 // NoOp 100 if (!m_groupMessagingEnabled)
101 return;
102
103 scene.RegisterModuleInterface<IGroupsMessagingModule>(this);
112 } 104 }
105
113 public void RegionLoaded(Scene scene) 106 public void RegionLoaded(Scene scene)
114 { 107 {
115 if (!m_groupMessagingEnabled) 108 if (!m_groupMessagingEnabled)
@@ -117,12 +110,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
117 110
118 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 111 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
119 112
120 m_groupsModule = scene.RequestModuleInterface<IGroupsModule>(); 113 m_groupData = scene.RequestModuleInterface<IGroupsServicesConnector>();
121 114
122 // No groups module, no groups messaging 115 // No groups module, no groups messaging
123 if (m_groupsModule == null) 116 if (m_groupData == null)
124 { 117 {
125 m_log.Error("[GROUPS-MESSAGING]: Could not get IGroupsModule, GroupsMessagingModule is now disabled."); 118 m_log.Error("[GROUPS-MESSAGING]: Could not get IGroupsServicesConnector, GroupsMessagingModule is now disabled.");
126 Close(); 119 Close();
127 m_groupMessagingEnabled = false; 120 m_groupMessagingEnabled = false;
128 return; 121 return;
@@ -144,7 +137,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
144 137
145 scene.EventManager.OnNewClient += OnNewClient; 138 scene.EventManager.OnNewClient += OnNewClient;
146 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage; 139 scene.EventManager.OnIncomingInstantMessage += OnGridInstantMessage;
147
148 } 140 }
149 141
150 public void RemoveRegion(Scene scene) 142 public void RemoveRegion(Scene scene)
@@ -172,7 +164,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
172 164
173 m_sceneList.Clear(); 165 m_sceneList.Clear();
174 166
175 m_groupsModule = null; 167 m_groupData = null;
176 m_msgTransferModule = null; 168 m_msgTransferModule = null;
177 } 169 }
178 170
@@ -197,6 +189,75 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
197 189
198 #endregion 190 #endregion
199 191
192 /// <summary>
193 /// Not really needed, but does confirm that the group exists.
194 /// </summary>
195 public bool StartGroupChatSession(UUID agentID, UUID groupID)
196 {
197 if (m_debugEnabled)
198 m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
199
200 GroupRecord groupInfo = m_groupData.GetGroupRecord(agentID, groupID, null);
201
202 if (groupInfo != null)
203 {
204 return true;
205 }
206 else
207 {
208 return false;
209 }
210 }
211
212 public void SendMessageToGroup(GridInstantMessage im, UUID groupID)
213 {
214 if (m_debugEnabled)
215 m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
216
217
218 foreach (GroupMembersData member in m_groupData.GetGroupMembers(UUID.Zero, groupID))
219 {
220 if (m_groupData.hasAgentDroppedGroupChatSession(member.AgentID, groupID))
221 {
222 // Don't deliver messages to people who have dropped this session
223 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} has dropped session, not delivering to them", member.AgentID);
224 continue;
225 }
226
227 // Copy Message
228 GridInstantMessage msg = new GridInstantMessage();
229 msg.imSessionID = groupID.Guid;
230 msg.fromAgentName = im.fromAgentName;
231 msg.message = im.message;
232 msg.dialog = im.dialog;
233 msg.offline = im.offline;
234 msg.ParentEstateID = im.ParentEstateID;
235 msg.Position = im.Position;
236 msg.RegionID = im.RegionID;
237 msg.binaryBucket = im.binaryBucket;
238 msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
239
240 msg.fromAgentID = im.fromAgentID;
241 msg.fromGroup = true;
242
243 msg.toAgentID = member.AgentID.Guid;
244
245 IClientAPI client = GetActiveClient(member.AgentID);
246 if (client == null)
247 {
248 // If they're not local, forward across the grid
249 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Delivering to {0} via Grid", member.AgentID);
250 m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { });
251 }
252 else
253 {
254 // Deliver locally, directly
255 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", client.Name);
256 ProcessMessageFromGroupSession(msg);
257 }
258 }
259 }
260
200 #region SimGridEventHandlers 261 #region SimGridEventHandlers
201 262
202 private void OnNewClient(IClientAPI client) 263 private void OnNewClient(IClientAPI client)
@@ -236,42 +297,46 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
236 { 297 {
237 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Session message from {0} going to agent {1}", msg.fromAgentName, msg.toAgentID); 298 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Session message from {0} going to agent {1}", msg.fromAgentName, msg.toAgentID);
238 299
300 UUID AgentID = new UUID(msg.fromAgentID);
301 UUID GroupID = new UUID(msg.imSessionID);
302
239 switch (msg.dialog) 303 switch (msg.dialog)
240 { 304 {
241 case (byte)InstantMessageDialog.SessionAdd: 305 case (byte)InstantMessageDialog.SessionAdd:
242 AddAgentToGroupSession(msg.fromAgentID, msg.imSessionID); 306 m_groupData.AgentInvitedToGroupChatSession(AgentID, GroupID);
243 break; 307 break;
244 308
245 case (byte)InstantMessageDialog.SessionDrop: 309 case (byte)InstantMessageDialog.SessionDrop:
246 RemoveAgentFromGroupSession(msg.fromAgentID, msg.imSessionID); 310 m_groupData.AgentDroppedFromGroupChatSession(AgentID, GroupID);
247 break; 311 break;
248 312
249 case (byte)InstantMessageDialog.SessionSend: 313 case (byte)InstantMessageDialog.SessionSend:
250 if (!m_agentsInGroupSession.ContainsKey(msg.toAgentID) 314 if (!m_groupData.hasAgentDroppedGroupChatSession(AgentID, GroupID)
251 && !m_agentsDroppedSession.ContainsKey(msg.toAgentID)) 315 && !m_groupData.hasAgentBeenInvitedToGroupChatSession(AgentID, GroupID)
316 )
252 { 317 {
253 // Agent not in session and hasn't dropped from session 318 // Agent not in session and hasn't dropped from session
254 // Add them to the session for now, and Invite them 319 // Add them to the session for now, and Invite them
255 AddAgentToGroupSession(msg.toAgentID, msg.imSessionID); 320 m_groupData.AgentInvitedToGroupChatSession(AgentID, GroupID);
256 321
257 UUID toAgentID = new UUID(msg.toAgentID); 322 UUID toAgentID = new UUID(msg.toAgentID);
258 IClientAPI activeClient = GetActiveClient(toAgentID); 323 IClientAPI activeClient = GetActiveClient(toAgentID);
259 if (activeClient != null) 324 if (activeClient != null)
260 { 325 {
261 UUID groupID = new UUID(msg.fromAgentID); 326 GroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero, GroupID, null);
262
263 GroupRecord groupInfo = m_groupsModule.GetGroupRecord(groupID);
264 if (groupInfo != null) 327 if (groupInfo != null)
265 { 328 {
266 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Sending chatterbox invite instant message"); 329 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Sending chatterbox invite instant message");
267 330
268 // Force? open the group session dialog??? 331 // Force? open the group session dialog???
332 // and simultanously deliver the message, so we don't need to do a seperate client.SendInstantMessage(msg);
269 IEventQueue eq = activeClient.Scene.RequestModuleInterface<IEventQueue>(); 333 IEventQueue eq = activeClient.Scene.RequestModuleInterface<IEventQueue>();
270 eq.ChatterboxInvitation( 334 eq.ChatterboxInvitation(
271 groupID 335 GroupID
272 , groupInfo.GroupName 336 , groupInfo.GroupName
273 , new UUID(msg.fromAgentID) 337 , new UUID(msg.fromAgentID)
274 , msg.message, new UUID(msg.toAgentID) 338 , msg.message
339 , new UUID(msg.toAgentID)
275 , msg.fromAgentName 340 , msg.fromAgentName
276 , msg.dialog 341 , msg.dialog
277 , msg.timestamp 342 , msg.timestamp
@@ -285,7 +350,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
285 ); 350 );
286 351
287 eq.ChatterBoxSessionAgentListUpdates( 352 eq.ChatterBoxSessionAgentListUpdates(
288 new UUID(groupID) 353 new UUID(GroupID)
289 , new UUID(msg.fromAgentID) 354 , new UUID(msg.fromAgentID)
290 , new UUID(msg.toAgentID) 355 , new UUID(msg.toAgentID)
291 , false //canVoiceChat 356 , false //canVoiceChat
@@ -295,7 +360,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
295 } 360 }
296 } 361 }
297 } 362 }
298 else if (!m_agentsDroppedSession.ContainsKey(msg.toAgentID)) 363 else if (!m_groupData.hasAgentDroppedGroupChatSession(AgentID, GroupID))
299 { 364 {
300 // User hasn't dropped, so they're in the session, 365 // User hasn't dropped, so they're in the session,
301 // maybe we should deliver it. 366 // maybe we should deliver it.
@@ -321,56 +386,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
321 386
322 #endregion 387 #endregion
323 388
324 #region ClientEvents
325
326 private void RemoveAgentFromGroupSession(Guid agentID, Guid sessionID)
327 {
328 if (m_agentsInGroupSession.ContainsKey(sessionID))
329 {
330 // If in session remove
331 if (m_agentsInGroupSession[sessionID].Contains(agentID))
332 {
333 m_agentsInGroupSession[sessionID].Remove(agentID);
334 }
335
336 // If not in dropped list, add
337 if (!m_agentsDroppedSession[sessionID].Contains(agentID))
338 {
339 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Dropped {1} from session {0}", sessionID, agentID);
340 m_agentsDroppedSession[sessionID].Add(agentID);
341 }
342 }
343 }
344
345 private void AddAgentToGroupSession(Guid agentID, Guid sessionID)
346 {
347 // Add Session Status if it doesn't exist for this session
348 CreateGroupSessionTracking(sessionID);
349
350 // If nessesary, remove from dropped list
351 if (m_agentsDroppedSession[sessionID].Contains(agentID))
352 {
353 m_agentsDroppedSession[sessionID].Remove(agentID);
354 }
355
356 // If nessesary, add to in session list
357 if (!m_agentsInGroupSession[sessionID].Contains(agentID))
358 {
359 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Added {1} to session {0}", sessionID, agentID);
360 m_agentsInGroupSession[sessionID].Add(agentID);
361 }
362 }
363
364 private void CreateGroupSessionTracking(Guid sessionID)
365 {
366 if (!m_agentsInGroupSession.ContainsKey(sessionID))
367 {
368 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Creating session tracking for : {0}", sessionID);
369 m_agentsInGroupSession.Add(sessionID, new List<Guid>());
370 m_agentsDroppedSession.Add(sessionID, new List<Guid>());
371 }
372 }
373 389
390 #region ClientEvents
374 private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im) 391 private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im)
375 { 392 {
376 if (m_debugEnabled) 393 if (m_debugEnabled)
@@ -383,21 +400,23 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
383 // Start group IM session 400 // Start group IM session
384 if ((im.dialog == (byte)InstantMessageDialog.SessionGroupStart)) 401 if ((im.dialog == (byte)InstantMessageDialog.SessionGroupStart))
385 { 402 {
386 UUID groupID = new UUID(im.toAgentID); 403 if (m_debugEnabled) m_log.InfoFormat("[GROUPS-MESSAGING]: imSessionID({0}) toAgentID({1})", im.imSessionID, im.toAgentID);
387 404
388 GroupRecord groupInfo = m_groupsModule.GetGroupRecord(groupID); 405 UUID GroupID = new UUID(im.imSessionID);
406 UUID AgentID = new UUID(im.fromAgentID);
407
408 GroupRecord groupInfo = m_groupData.GetGroupRecord(UUID.Zero, GroupID, null);
409
389 if (groupInfo != null) 410 if (groupInfo != null)
390 { 411 {
391 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Start Group Session for {0}", groupInfo.GroupName); 412 m_groupData.AgentInvitedToGroupChatSession(AgentID, GroupID);
392
393 AddAgentToGroupSession(im.fromAgentID, im.imSessionID);
394 413
395 ChatterBoxSessionStartReplyViaCaps(remoteClient, groupInfo.GroupName, groupID); 414 ChatterBoxSessionStartReplyViaCaps(remoteClient, groupInfo.GroupName, GroupID);
396 415
397 IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>(); 416 IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
398 queue.ChatterBoxSessionAgentListUpdates( 417 queue.ChatterBoxSessionAgentListUpdates(
399 new UUID(groupID) 418 GroupID
400 , new UUID(im.fromAgentID) 419 , AgentID
401 , new UUID(im.toAgentID) 420 , new UUID(im.toAgentID)
402 , false //canVoiceChat 421 , false //canVoiceChat
403 , false //isModerator 422 , false //isModerator
@@ -409,64 +428,21 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
409 // Send a message from locally connected client to a group 428 // Send a message from locally connected client to a group
410 if ((im.dialog == (byte)InstantMessageDialog.SessionSend)) 429 if ((im.dialog == (byte)InstantMessageDialog.SessionSend))
411 { 430 {
412 UUID groupID = new UUID(im.toAgentID); 431 UUID GroupID = new UUID(im.imSessionID);
432 UUID AgentID = new UUID(im.fromAgentID);
413 433
414 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Send message to session for group {0} with session ID {1}", groupID, im.imSessionID.ToString()); 434 if (m_debugEnabled)
435 m_log.DebugFormat("[GROUPS-MESSAGING]: Send message to session for group {0} with session ID {1}", GroupID, im.imSessionID.ToString());
415 436
416 SendMessageToGroup(im, groupID); 437 //If this agent is sending a message, then they want to be in the session
438 m_groupData.AgentInvitedToGroupChatSession(AgentID, GroupID);
439
440 SendMessageToGroup(im, GroupID);
417 } 441 }
418 } 442 }
419 443
420 #endregion 444 #endregion
421 445
422 private void SendMessageToGroup(GridInstantMessage im, UUID groupID)
423 {
424 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
425
426 foreach (GroupMembersData member in m_groupsModule.GroupMembersRequest(null, groupID))
427 {
428 if (!m_agentsDroppedSession.ContainsKey(im.imSessionID) || m_agentsDroppedSession[im.imSessionID].Contains(member.AgentID.Guid))
429 {
430 // Don't deliver messages to people who have dropped this session
431 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} has dropped session, not delivering to them", member.AgentID);
432 continue;
433 }
434
435 // Copy Message
436 GridInstantMessage msg = new GridInstantMessage();
437 msg.imSessionID = im.imSessionID;
438 msg.fromAgentName = im.fromAgentName;
439 msg.message = im.message;
440 msg.dialog = im.dialog;
441 msg.offline = im.offline;
442 msg.ParentEstateID = im.ParentEstateID;
443 msg.Position = im.Position;
444 msg.RegionID = im.RegionID;
445 msg.binaryBucket = im.binaryBucket;
446 msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
447
448 // Updat Pertinate fields to make it a "group message"
449 msg.fromAgentID = groupID.Guid;
450 msg.fromGroup = true;
451
452 msg.toAgentID = member.AgentID.Guid;
453
454 IClientAPI client = GetActiveClient(member.AgentID);
455 if (client == null)
456 {
457 // If they're not local, forward across the grid
458 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Delivering to {0} via Grid", member.AgentID);
459 m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { });
460 }
461 else
462 {
463 // Deliver locally, directly
464 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", client.Name);
465 ProcessMessageFromGroupSession(msg);
466 }
467 }
468 }
469
470 void ChatterBoxSessionStartReplyViaCaps(IClientAPI remoteClient, string groupName, UUID groupID) 446 void ChatterBoxSessionStartReplyViaCaps(IClientAPI remoteClient, string groupName, UUID groupID)
471 { 447 {
472 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 448 if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
@@ -518,6 +494,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
518 /// </summary> 494 /// </summary>
519 private IClientAPI GetActiveClient(UUID agentID) 495 private IClientAPI GetActiveClient(UUID agentID)
520 { 496 {
497 if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Looking for local client {0}", agentID);
498
521 IClientAPI child = null; 499 IClientAPI child = null;
522 500
523 // Try root avatar first 501 // Try root avatar first
@@ -529,16 +507,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
529 ScenePresence user = (ScenePresence)scene.Entities[agentID]; 507 ScenePresence user = (ScenePresence)scene.Entities[agentID];
530 if (!user.IsChildAgent) 508 if (!user.IsChildAgent)
531 { 509 {
510 if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", user.ControllingClient.Name);
532 return user.ControllingClient; 511 return user.ControllingClient;
533 } 512 }
534 else 513 else
535 { 514 {
515 if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", user.ControllingClient.Name);
536 child = user.ControllingClient; 516 child = user.ControllingClient;
537 } 517 }
538 } 518 }
539 } 519 }
540 520
541 // If we didn't find a root, then just return whichever child we found, or null if none 521 // If we didn't find a root, then just return whichever child we found, or null if none
522 if (child == null)
523 {
524 if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Could not find local client for agent : {0}", agentID);
525 }
526 else
527 {
528 if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Returning child agent for client : {0}", child.Name);
529 }
542 return child; 530 return child;
543 } 531 }
544 532
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index 8d32e66..3e05732 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -87,16 +87,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
87 87
88 private IGroupsServicesConnector m_groupData = null; 88 private IGroupsServicesConnector m_groupData = null;
89 89
90 class GroupRequestIDInfo
91 {
92 public GroupRequestID RequestID = new GroupRequestID();
93 public DateTime LastUsedTMStamp = DateTime.MinValue;
94 }
95 private Dictionary<UUID, GroupRequestIDInfo> m_clientRequestIDInfo = new Dictionary<UUID, GroupRequestIDInfo>();
96 private const int m_clientRequestIDFlushTimeOut = 300000; // Every 5 minutes
97 private Timer m_clientRequestIDFlushTimer;
98
99
100 // Configuration settings 90 // Configuration settings
101 private bool m_groupsEnabled = false; 91 private bool m_groupsEnabled = false;
102 private bool m_groupNoticesEnabled = true; 92 private bool m_groupNoticesEnabled = true;
@@ -133,30 +123,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
133 m_groupNoticesEnabled = groupsConfig.GetBoolean("NoticesEnabled", true); 123 m_groupNoticesEnabled = groupsConfig.GetBoolean("NoticesEnabled", true);
134 m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true); 124 m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true);
135 125
136 m_clientRequestIDFlushTimer = new Timer();
137 m_clientRequestIDFlushTimer.Interval = m_clientRequestIDFlushTimeOut;
138 m_clientRequestIDFlushTimer.Elapsed += FlushClientRequestIDInfoCache;
139 m_clientRequestIDFlushTimer.AutoReset = true;
140 m_clientRequestIDFlushTimer.Start();
141 }
142 }
143
144 void FlushClientRequestIDInfoCache(object sender, ElapsedEventArgs e)
145 {
146 lock (m_clientRequestIDInfo)
147 {
148 TimeSpan cacheTimeout = new TimeSpan(0,0, m_clientRequestIDFlushTimeOut / 1000);
149 UUID[] CurrentKeys = new UUID[m_clientRequestIDInfo.Count];
150 foreach (UUID key in CurrentKeys)
151 {
152 if (m_clientRequestIDInfo.ContainsKey(key))
153 {
154 if (DateTime.Now - m_clientRequestIDInfo[key].LastUsedTMStamp > cacheTimeout)
155 {
156 m_clientRequestIDInfo.Remove(key);
157 }
158 }
159 }
160 } 126 }
161 } 127 }
162 128
@@ -234,8 +200,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
234 return; 200 return;
235 201
236 if (m_debugEnabled) m_log.Debug("[GROUPS]: Shutting down Groups module."); 202 if (m_debugEnabled) m_log.Debug("[GROUPS]: Shutting down Groups module.");
237
238 m_clientRequestIDFlushTimer.Stop();
239 } 203 }
240 204
241 public Type ReplaceableInterface 205 public Type ReplaceableInterface
@@ -272,14 +236,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
272 // Used for Notices and Group Invites/Accept/Reject 236 // Used for Notices and Group Invites/Accept/Reject
273 client.OnInstantMessage += OnInstantMessage; 237 client.OnInstantMessage += OnInstantMessage;
274 238
275 lock (m_clientRequestIDInfo) 239 // Send client thier groups information.
276 {
277 if (m_clientRequestIDInfo.ContainsKey(client.AgentId))
278 {
279 // flush any old RequestID information
280 m_clientRequestIDInfo.Remove(client.AgentId);
281 }
282 }
283 SendAgentGroupDataUpdate(client, client.AgentId); 240 SendAgentGroupDataUpdate(client, client.AgentId);
284 } 241 }
285 242
@@ -287,7 +244,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
287 { 244 {
288 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 245 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
289 246
290 //GroupMembershipData[] avatarGroups = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(remoteClient), avatarID).ToArray(); 247 //GroupMembershipData[] avatarGroups = m_groupData.GetAgentGroupMemberships(GetRequestingAgentID(remoteClient), avatarID).ToArray();
291 GroupMembershipData[] avatarGroups = GetProfileListedGroupMemberships(remoteClient, avatarID); 248 GroupMembershipData[] avatarGroups = GetProfileListedGroupMemberships(remoteClient, avatarID);
292 remoteClient.SendAvatarGroupsReply(avatarID, avatarGroups); 249 remoteClient.SendAvatarGroupsReply(avatarID, avatarGroups);
293 } 250 }
@@ -331,10 +288,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
331 { 288 {
332 if (((DirFindFlags)queryFlags & DirFindFlags.Groups) == DirFindFlags.Groups) 289 if (((DirFindFlags)queryFlags & DirFindFlags.Groups) == DirFindFlags.Groups)
333 { 290 {
334 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called with queryText({1}) queryFlags({2}) queryStart({3})", System.Reflection.MethodBase.GetCurrentMethod().Name, queryText, (DirFindFlags)queryFlags, queryStart); 291 if (m_debugEnabled)
292 m_log.DebugFormat(
293 "[GROUPS]: {0} called with queryText({1}) queryFlags({2}) queryStart({3})",
294 System.Reflection.MethodBase.GetCurrentMethod().Name, queryText, (DirFindFlags)queryFlags, queryStart);
335 295
336 // TODO: This currently ignores pretty much all the query flags including Mature and sort order 296 // TODO: This currently ignores pretty much all the query flags including Mature and sort order
337 remoteClient.SendDirGroupsReply(queryID, m_groupData.FindGroups(GetClientGroupRequestID(remoteClient), queryText).ToArray()); 297 remoteClient.SendDirGroupsReply(queryID, m_groupData.FindGroups(GetRequestingAgentID(remoteClient), queryText).ToArray());
338 } 298 }
339 299
340 } 300 }
@@ -348,7 +308,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
348 string activeGroupName = string.Empty; 308 string activeGroupName = string.Empty;
349 ulong activeGroupPowers = (ulong)GroupPowers.None; 309 ulong activeGroupPowers = (ulong)GroupPowers.None;
350 310
351 GroupMembershipData membership = m_groupData.GetAgentActiveMembership(GetClientGroupRequestID(remoteClient), dataForAgentID); 311 GroupMembershipData membership = m_groupData.GetAgentActiveMembership(GetRequestingAgentID(remoteClient), dataForAgentID);
352 if (membership != null) 312 if (membership != null)
353 { 313 {
354 activeGroupID = membership.GroupID; 314 activeGroupID = membership.GroupID;
@@ -361,13 +321,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
361 SendScenePresenceUpdate(dataForAgentID, activeGroupTitle); 321 SendScenePresenceUpdate(dataForAgentID, activeGroupTitle);
362 } 322 }
363 323
364 private void HandleUUIDGroupNameRequest(UUID GroupID,IClientAPI remoteClient) 324 private void HandleUUIDGroupNameRequest(UUID GroupID, IClientAPI remoteClient)
365 { 325 {
366 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 326 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
367 327
368 string GroupName; 328 string GroupName;
369 329
370 GroupRecord group = m_groupData.GetGroupRecord(GetClientGroupRequestID(remoteClient), GroupID, null); 330 GroupRecord group = m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), GroupID, null);
371 if (group != null) 331 if (group != null)
372 { 332 {
373 GroupName = group.GroupName; 333 GroupName = group.GroupName;
@@ -382,13 +342,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
382 342
383 private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im) 343 private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im)
384 { 344 {
385 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 345 if (m_debugEnabled)
346 {
347 m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
348 m_log.DebugFormat("[GROUPS]: remoteClient ({0}) im ({1})", remoteClient, im);
349
350 }
351
386 352
387 // Group invitations 353 // Group invitations
388 if ((im.dialog == (byte)InstantMessageDialog.GroupInvitationAccept) || (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline)) 354 if ((im.dialog == (byte)InstantMessageDialog.GroupInvitationAccept) || (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline))
389 { 355 {
390 UUID inviteID = new UUID(im.imSessionID); 356 UUID inviteID = new UUID(im.imSessionID);
391 GroupInviteInfo inviteInfo = m_groupData.GetAgentToGroupInvite(GetClientGroupRequestID(remoteClient), inviteID); 357 GroupInviteInfo inviteInfo = m_groupData.GetAgentToGroupInvite(GetRequestingAgentID(remoteClient), inviteID);
392 358
393 if (inviteInfo == null) 359 if (inviteInfo == null)
394 { 360 {
@@ -407,7 +373,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
407 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Received an accept invite notice."); 373 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Received an accept invite notice.");
408 374
409 // and the sessionid is the role 375 // and the sessionid is the role
410 m_groupData.AddAgentToGroup(GetClientGroupRequestID(remoteClient), inviteInfo.AgentID, inviteInfo.GroupID, inviteInfo.RoleID); 376 m_groupData.AddAgentToGroup(GetRequestingAgentID(remoteClient), inviteInfo.AgentID, inviteInfo.GroupID, inviteInfo.RoleID);
411 377
412 GridInstantMessage msg = new GridInstantMessage(); 378 GridInstantMessage msg = new GridInstantMessage();
413 msg.imSessionID = UUID.Zero.Guid; 379 msg.imSessionID = UUID.Zero.Guid;
@@ -431,14 +397,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
431 // TODO: If the inviter is still online, they need an agent dataupdate 397 // TODO: If the inviter is still online, they need an agent dataupdate
432 // and maybe group membership updates for the invitee 398 // and maybe group membership updates for the invitee
433 399
434 m_groupData.RemoveAgentToGroupInvite(GetClientGroupRequestID(remoteClient), inviteID); 400 m_groupData.RemoveAgentToGroupInvite(GetRequestingAgentID(remoteClient), inviteID);
435 } 401 }
436 402
437 // Reject 403 // Reject
438 if (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline) 404 if (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline)
439 { 405 {
440 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Received a reject invite notice."); 406 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Received a reject invite notice.");
441 m_groupData.RemoveAgentToGroupInvite(GetClientGroupRequestID(remoteClient), inviteID); 407 m_groupData.RemoveAgentToGroupInvite(GetRequestingAgentID(remoteClient), inviteID);
442 } 408 }
443 } 409 }
444 } 410 }
@@ -452,7 +418,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
452 } 418 }
453 419
454 UUID GroupID = new UUID(im.toAgentID); 420 UUID GroupID = new UUID(im.toAgentID);
455 if (m_groupData.GetGroupRecord(GetClientGroupRequestID(remoteClient), GroupID, null) != null) 421 if (m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), GroupID, null) != null)
456 { 422 {
457 UUID NoticeID = UUID.Random(); 423 UUID NoticeID = UUID.Random();
458 string Subject = im.message.Substring(0, im.message.IndexOf('|')); 424 string Subject = im.message.Substring(0, im.message.IndexOf('|'));
@@ -496,14 +462,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
496 } 462 }
497 463
498 464
499 m_groupData.AddGroupNotice(GetClientGroupRequestID(remoteClient), GroupID, NoticeID, im.fromAgentName, Subject, Message, bucket); 465 m_groupData.AddGroupNotice(GetRequestingAgentID(remoteClient), GroupID, NoticeID, im.fromAgentName, Subject, Message, bucket);
500 if (OnNewGroupNotice != null) 466 if (OnNewGroupNotice != null)
501 { 467 {
502 OnNewGroupNotice(GroupID, NoticeID); 468 OnNewGroupNotice(GroupID, NoticeID);
503 } 469 }
504 470
505 // Send notice out to everyone that wants notices 471 // Send notice out to everyone that wants notices
506 foreach (GroupMembersData member in m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), GroupID)) 472 foreach (GroupMembersData member in m_groupData.GetGroupMembers(GetRequestingAgentID(remoteClient), GroupID))
507 { 473 {
508 if (m_debugEnabled) 474 if (m_debugEnabled)
509 { 475 {
@@ -521,7 +487,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
521 if (member.AcceptNotices) 487 if (member.AcceptNotices)
522 { 488 {
523 // Build notice IIM 489 // Build notice IIM
524 GridInstantMessage msg = CreateGroupNoticeIM(UUID.Zero, NoticeID, (byte)OpenMetaverse.InstantMessageDialog.GroupNotice); 490 GridInstantMessage msg = CreateGroupNoticeIM(GetRequestingAgentID(remoteClient), NoticeID, (byte)OpenMetaverse.InstantMessageDialog.GroupNotice);
525 491
526 msg.toAgentID = member.AgentID.Guid; 492 msg.toAgentID = member.AgentID.Guid;
527 OutgoingInstantMessage(msg, member.AgentID); 493 OutgoingInstantMessage(msg, member.AgentID);
@@ -549,7 +515,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
549 IClientAPI ejectee = GetActiveClient(ejecteeID); 515 IClientAPI ejectee = GetActiveClient(ejecteeID);
550 if (ejectee != null) 516 if (ejectee != null)
551 { 517 {
552 UUID groupID = new UUID(im.fromAgentID); 518 UUID groupID = new UUID(im.imSessionID);
553 ejectee.SendAgentDropGroup(groupID); 519 ejectee.SendAgentDropGroup(groupID);
554 } 520 }
555 } 521 }
@@ -588,20 +554,25 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
588 554
589 public GroupRecord GetGroupRecord(UUID GroupID) 555 public GroupRecord GetGroupRecord(UUID GroupID)
590 { 556 {
591 return m_groupData.GetGroupRecord(null, GroupID, null); 557 return m_groupData.GetGroupRecord(UUID.Zero, GroupID, null);
592 } 558 }
593 559
560 public GroupRecord GetGroupRecord(string name)
561 {
562 return m_groupData.GetGroupRecord(UUID.Zero, UUID.Zero, name);
563 }
564
594 public void ActivateGroup(IClientAPI remoteClient, UUID groupID) 565 public void ActivateGroup(IClientAPI remoteClient, UUID groupID)
595 { 566 {
596 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 567 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
597 568
598 m_groupData.SetAgentActiveGroup(GetClientGroupRequestID(remoteClient), remoteClient.AgentId, groupID); 569 m_groupData.SetAgentActiveGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID);
599 570
600 // Changing active group changes title, active powers, all kinds of things 571 // Changing active group changes title, active powers, all kinds of things
601 // anyone who is in any region that can see this client, should probably be 572 // anyone who is in any region that can see this client, should probably be
602 // updated with new group info. At a minimum, they should get ScenePresence 573 // updated with new group info. At a minimum, they should get ScenePresence
603 // updated with new title. 574 // updated with new title.
604 UpdateAllClientsWithGroupInfo(remoteClient.AgentId); 575 UpdateAllClientsWithGroupInfo(GetRequestingAgentID(remoteClient));
605 } 576 }
606 577
607 /// <summary> 578 /// <summary>
@@ -611,10 +582,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
611 { 582 {
612 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 583 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
613 584
614 GroupRequestID grID = GetClientGroupRequestID(remoteClient);
615 585
616 List<GroupRolesData> agentRoles = m_groupData.GetAgentGroupRoles(grID, remoteClient.AgentId, groupID); 586 List<GroupRolesData> agentRoles = m_groupData.GetAgentGroupRoles(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID);
617 GroupMembershipData agentMembership = m_groupData.GetAgentGroupMembership(grID, remoteClient.AgentId, groupID); 587 GroupMembershipData agentMembership = m_groupData.GetAgentGroupMembership(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID);
618 588
619 List<GroupTitlesData> titles = new List<GroupTitlesData>(); 589 List<GroupTitlesData> titles = new List<GroupTitlesData>();
620 foreach (GroupRolesData role in agentRoles) 590 foreach (GroupRolesData role in agentRoles)
@@ -636,8 +606,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
636 public List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID) 606 public List<GroupMembersData> GroupMembersRequest(IClientAPI remoteClient, UUID groupID)
637 { 607 {
638 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 608 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
609 List<GroupMembersData> data = m_groupData.GetGroupMembers(GetRequestingAgentID(remoteClient), groupID);
639 610
640 List<GroupMembersData> data = m_groupData.GetGroupMembers(GetClientGroupRequestID(remoteClient), groupID); 611 if (m_debugEnabled)
612 {
613 foreach (GroupMembersData member in data)
614 {
615 m_log.DebugFormat("[GROUPS]: Member({0}) - IsOwner({1})", member.AgentID, member.IsOwner);
616 }
617 }
641 618
642 return data; 619 return data;
643 620
@@ -647,21 +624,25 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
647 { 624 {
648 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 625 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
649 626
650 List<GroupRolesData> data = m_groupData.GetGroupRoles(GetClientGroupRequestID(remoteClient), groupID); 627 List<GroupRolesData> data = m_groupData.GetGroupRoles(GetRequestingAgentID(remoteClient), groupID);
651 628
652 return data; 629 return data;
653
654 } 630 }
655 631
656 public List<GroupRoleMembersData> GroupRoleMembersRequest(IClientAPI remoteClient, UUID groupID) 632 public List<GroupRoleMembersData> GroupRoleMembersRequest(IClientAPI remoteClient, UUID groupID)
657 { 633 {
658 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 634 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
659 635
660 List<GroupRoleMembersData> data = m_groupData.GetGroupRoleMembers(GetClientGroupRequestID(remoteClient), groupID); 636 List<GroupRoleMembersData> data = m_groupData.GetGroupRoleMembers(GetRequestingAgentID(remoteClient), groupID);
661 637
638 if (m_debugEnabled)
639 {
640 foreach (GroupRoleMembersData member in data)
641 {
642 m_log.DebugFormat("[GROUPS]: Member({0}) - Role({1})", member.MemberID, member.RoleID);
643 }
644 }
662 return data; 645 return data;
663
664
665 } 646 }
666 647
667 public GroupProfileData GroupProfileRequest(IClientAPI remoteClient, UUID groupID) 648 public GroupProfileData GroupProfileRequest(IClientAPI remoteClient, UUID groupID)
@@ -670,17 +651,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
670 651
671 GroupProfileData profile = new GroupProfileData(); 652 GroupProfileData profile = new GroupProfileData();
672 653
673 GroupRequestID grID = GetClientGroupRequestID(remoteClient);
674 654
675 GroupRecord groupInfo = m_groupData.GetGroupRecord(GetClientGroupRequestID(remoteClient), groupID, null); 655 GroupRecord groupInfo = m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), groupID, null);
676 if (groupInfo != null) 656 if (groupInfo != null)
677 { 657 {
678 profile.AllowPublish = groupInfo.AllowPublish; 658 profile.AllowPublish = groupInfo.AllowPublish;
679 profile.Charter = groupInfo.Charter; 659 profile.Charter = groupInfo.Charter;
680 profile.FounderID = groupInfo.FounderID; 660 profile.FounderID = groupInfo.FounderID;
681 profile.GroupID = groupID; 661 profile.GroupID = groupID;
682 profile.GroupMembershipCount = m_groupData.GetGroupMembers(grID, groupID).Count; 662 profile.GroupMembershipCount = m_groupData.GetGroupMembers(GetRequestingAgentID(remoteClient), groupID).Count;
683 profile.GroupRolesCount = m_groupData.GetGroupRoles(grID, groupID).Count; 663 profile.GroupRolesCount = m_groupData.GetGroupRoles(GetRequestingAgentID(remoteClient), groupID).Count;
684 profile.InsigniaID = groupInfo.GroupPicture; 664 profile.InsigniaID = groupInfo.GroupPicture;
685 profile.MaturePublish = groupInfo.MaturePublish; 665 profile.MaturePublish = groupInfo.MaturePublish;
686 profile.MembershipFee = groupInfo.MembershipFee; 666 profile.MembershipFee = groupInfo.MembershipFee;
@@ -691,7 +671,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
691 profile.ShowInList = groupInfo.ShowInList; 671 profile.ShowInList = groupInfo.ShowInList;
692 } 672 }
693 673
694 GroupMembershipData memberInfo = m_groupData.GetAgentGroupMembership(grID, remoteClient.AgentId, groupID); 674 GroupMembershipData memberInfo = m_groupData.GetAgentGroupMembership(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID);
695 if (memberInfo != null) 675 if (memberInfo != null)
696 { 676 {
697 profile.MemberTitle = memberInfo.GroupTitle; 677 profile.MemberTitle = memberInfo.GroupTitle;
@@ -705,40 +685,40 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
705 { 685 {
706 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 686 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
707 687
708 return m_groupData.GetAgentGroupMemberships(null, agentID).ToArray(); 688 return m_groupData.GetAgentGroupMemberships(UUID.Zero, agentID).ToArray();
709 } 689 }
710 690
711 public GroupMembershipData GetMembershipData(UUID groupID, UUID agentID) 691 public GroupMembershipData GetMembershipData(UUID groupID, UUID agentID)
712 { 692 {
713 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 693 if (m_debugEnabled)
694 m_log.DebugFormat(
695 "[GROUPS]: {0} called with groupID={1}, agentID={2}",
696 System.Reflection.MethodBase.GetCurrentMethod().Name, groupID, agentID);
714 697
715 return m_groupData.GetAgentGroupMembership(null, agentID, groupID); 698 return m_groupData.GetAgentGroupMembership(UUID.Zero, agentID, groupID);
716 } 699 }
717 700
718 public void UpdateGroupInfo(IClientAPI remoteClient, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish) 701 public void UpdateGroupInfo(IClientAPI remoteClient, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish)
719 { 702 {
720 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 703 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
721 704
722 // TODO: Security Check? 705 // Note: Permissions checking for modification rights is handled by the Groups Server/Service
723 706 m_groupData.UpdateGroup(GetRequestingAgentID(remoteClient), groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
724 m_groupData.UpdateGroup(GetClientGroupRequestID(remoteClient), groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish);
725 } 707 }
726 708
727 public void SetGroupAcceptNotices(IClientAPI remoteClient, UUID groupID, bool acceptNotices, bool listInProfile) 709 public void SetGroupAcceptNotices(IClientAPI remoteClient, UUID groupID, bool acceptNotices, bool listInProfile)
728 { 710 {
729 // TODO: Security Check? 711 // Note: Permissions checking for modification rights is handled by the Groups Server/Service
730 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 712 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
731 713
732 m_groupData.SetAgentGroupInfo(GetClientGroupRequestID(remoteClient), remoteClient.AgentId, groupID, acceptNotices, listInProfile); 714 m_groupData.SetAgentGroupInfo(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID, acceptNotices, listInProfile);
733 } 715 }
734 716
735 public UUID CreateGroup(IClientAPI remoteClient, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish) 717 public UUID CreateGroup(IClientAPI remoteClient, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish)
736 { 718 {
737 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 719 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
738 720
739 GroupRequestID grID = GetClientGroupRequestID(remoteClient); 721 if (m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), UUID.Zero, name) != null)
740
741 if (m_groupData.GetGroupRecord(grID, UUID.Zero, name) != null)
742 { 722 {
743 remoteClient.SendCreateGroupReply(UUID.Zero, false, "A group with the same name already exists."); 723 remoteClient.SendCreateGroupReply(UUID.Zero, false, "A group with the same name already exists.");
744 return UUID.Zero; 724 return UUID.Zero;
@@ -754,12 +734,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
754 } 734 }
755 money.ApplyGroupCreationCharge(remoteClient.AgentId); 735 money.ApplyGroupCreationCharge(remoteClient.AgentId);
756 } 736 }
757 UUID groupID = m_groupData.CreateGroup(grID, name, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish, remoteClient.AgentId); 737 UUID groupID = m_groupData.CreateGroup(GetRequestingAgentID(remoteClient), name, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish, GetRequestingAgentID(remoteClient));
758 738
759 remoteClient.SendCreateGroupReply(groupID, true, "Group created successfullly"); 739 remoteClient.SendCreateGroupReply(groupID, true, "Group created successfullly");
760 740
761 // Update the founder with new group information. 741 // Update the founder with new group information.
762 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 742 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
763 743
764 return groupID; 744 return groupID;
765 } 745 }
@@ -770,7 +750,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
770 750
771 // ToDo: check if agent is a member of group and is allowed to see notices? 751 // ToDo: check if agent is a member of group and is allowed to see notices?
772 752
773 return m_groupData.GetGroupNotices(GetClientGroupRequestID(remoteClient), groupID).ToArray(); 753 return m_groupData.GetGroupNotices(GetRequestingAgentID(remoteClient), groupID).ToArray();
774 } 754 }
775 755
776 /// <summary> 756 /// <summary>
@@ -780,7 +760,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
780 { 760 {
781 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 761 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
782 762
783 GroupMembershipData membership = m_groupData.GetAgentActiveMembership(null, avatarID); 763 GroupMembershipData membership = m_groupData.GetAgentActiveMembership(UUID.Zero, avatarID);
784 if (membership != null) 764 if (membership != null)
785 { 765 {
786 return membership.GroupTitle; 766 return membership.GroupTitle;
@@ -795,13 +775,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
795 { 775 {
796 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 776 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
797 777
798 m_groupData.SetAgentActiveGroupRole(GetClientGroupRequestID(remoteClient), remoteClient.AgentId, groupID, titleRoleID); 778 m_groupData.SetAgentActiveGroupRole(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID, titleRoleID);
799 779
800 // TODO: Not sure what all is needed here, but if the active group role change is for the group 780 // TODO: Not sure what all is needed here, but if the active group role change is for the group
801 // the client currently has set active, then we need to do a scene presence update too 781 // the client currently has set active, then we need to do a scene presence update too
802 // if (m_groupData.GetAgentActiveMembership(remoteClient.AgentId).GroupID == GroupID) 782 // if (m_groupData.GetAgentActiveMembership(GetRequestingAgentID(remoteClient)).GroupID == GroupID)
803 783
804 UpdateAllClientsWithGroupInfo(remoteClient.AgentId); 784 UpdateAllClientsWithGroupInfo(GetRequestingAgentID(remoteClient));
805 } 785 }
806 786
807 787
@@ -811,16 +791,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
811 791
812 // Security Checks are handled in the Groups Service. 792 // Security Checks are handled in the Groups Service.
813 793
814 GroupRequestID grID = GetClientGroupRequestID(remoteClient);
815
816 switch ((OpenMetaverse.GroupRoleUpdate)updateType) 794 switch ((OpenMetaverse.GroupRoleUpdate)updateType)
817 { 795 {
818 case OpenMetaverse.GroupRoleUpdate.Create: 796 case OpenMetaverse.GroupRoleUpdate.Create:
819 m_groupData.AddGroupRole(grID, groupID, UUID.Random(), name, description, title, powers); 797 m_groupData.AddGroupRole(GetRequestingAgentID(remoteClient), groupID, UUID.Random(), name, description, title, powers);
820 break; 798 break;
821 799
822 case OpenMetaverse.GroupRoleUpdate.Delete: 800 case OpenMetaverse.GroupRoleUpdate.Delete:
823 m_groupData.RemoveGroupRole(grID, groupID, roleID); 801 m_groupData.RemoveGroupRole(GetRequestingAgentID(remoteClient), groupID, roleID);
824 break; 802 break;
825 803
826 case OpenMetaverse.GroupRoleUpdate.UpdateAll: 804 case OpenMetaverse.GroupRoleUpdate.UpdateAll:
@@ -831,7 +809,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
831 GroupPowers gp = (GroupPowers)powers; 809 GroupPowers gp = (GroupPowers)powers;
832 m_log.DebugFormat("[GROUPS]: Role ({0}) updated with Powers ({1}) ({2})", name, powers.ToString(), gp.ToString()); 810 m_log.DebugFormat("[GROUPS]: Role ({0}) updated with Powers ({1}) ({2})", name, powers.ToString(), gp.ToString());
833 } 811 }
834 m_groupData.UpdateGroupRole(grID, groupID, roleID, name, description, title, powers); 812 m_groupData.UpdateGroupRole(GetRequestingAgentID(remoteClient), groupID, roleID, name, description, title, powers);
835 break; 813 break;
836 814
837 case OpenMetaverse.GroupRoleUpdate.NoUpdate: 815 case OpenMetaverse.GroupRoleUpdate.NoUpdate:
@@ -842,7 +820,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
842 } 820 }
843 821
844 // TODO: This update really should send out updates for everyone in the role that just got changed. 822 // TODO: This update really should send out updates for everyone in the role that just got changed.
845 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 823 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
846 } 824 }
847 825
848 public void GroupRoleChanges(IClientAPI remoteClient, UUID groupID, UUID roleID, UUID memberID, uint changes) 826 public void GroupRoleChanges(IClientAPI remoteClient, UUID groupID, UUID roleID, UUID memberID, uint changes)
@@ -850,18 +828,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
850 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 828 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
851 // Todo: Security check 829 // Todo: Security check
852 830
853 GroupRequestID grID = GetClientGroupRequestID(remoteClient);
854
855 switch (changes) 831 switch (changes)
856 { 832 {
857 case 0: 833 case 0:
858 // Add 834 // Add
859 m_groupData.AddAgentToGroupRole(grID, memberID, groupID, roleID); 835 m_groupData.AddAgentToGroupRole(GetRequestingAgentID(remoteClient), memberID, groupID, roleID);
860 836
861 break; 837 break;
862 case 1: 838 case 1:
863 // Remove 839 // Remove
864 m_groupData.RemoveAgentFromGroupRole(grID, memberID, groupID, roleID); 840 m_groupData.RemoveAgentFromGroupRole(GetRequestingAgentID(remoteClient), memberID, groupID, roleID);
865 841
866 break; 842 break;
867 default: 843 default:
@@ -870,25 +846,23 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
870 } 846 }
871 847
872 // TODO: This update really should send out updates for everyone in the role that just got changed. 848 // TODO: This update really should send out updates for everyone in the role that just got changed.
873 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 849 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
874 } 850 }
875 851
876 public void GroupNoticeRequest(IClientAPI remoteClient, UUID groupNoticeID) 852 public void GroupNoticeRequest(IClientAPI remoteClient, UUID groupNoticeID)
877 { 853 {
878 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 854 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
879 855
880 GroupRequestID grID = GetClientGroupRequestID(remoteClient); 856 GroupNoticeInfo data = m_groupData.GetGroupNotice(GetRequestingAgentID(remoteClient), groupNoticeID);
881
882 GroupNoticeInfo data = m_groupData.GetGroupNotice(grID, groupNoticeID);
883 857
884 if (data != null) 858 if (data != null)
885 { 859 {
886 GroupRecord groupInfo = m_groupData.GetGroupRecord(grID, data.GroupID, null); 860 GroupRecord groupInfo = m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), data.GroupID, null);
887 861
888 GridInstantMessage msg = new GridInstantMessage(); 862 GridInstantMessage msg = new GridInstantMessage();
889 msg.imSessionID = UUID.Zero.Guid; 863 msg.imSessionID = UUID.Zero.Guid;
890 msg.fromAgentID = data.GroupID.Guid; 864 msg.fromAgentID = data.GroupID.Guid;
891 msg.toAgentID = remoteClient.AgentId.Guid; 865 msg.toAgentID = GetRequestingAgentID(remoteClient).Guid;
892 msg.timestamp = (uint)Util.UnixTimeSinceEpoch(); 866 msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
893 msg.fromAgentName = "Group Notice : " + groupInfo == null ? "Unknown" : groupInfo.GroupName; 867 msg.fromAgentName = "Group Notice : " + groupInfo == null ? "Unknown" : groupInfo.GroupName;
894 msg.message = data.noticeData.Subject + "|" + data.Message; 868 msg.message = data.noticeData.Subject + "|" + data.Message;
@@ -900,7 +874,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
900 msg.RegionID = UUID.Zero.Guid; 874 msg.RegionID = UUID.Zero.Guid;
901 msg.binaryBucket = data.BinaryBucket; 875 msg.binaryBucket = data.BinaryBucket;
902 876
903 OutgoingInstantMessage(msg, remoteClient.AgentId); 877 OutgoingInstantMessage(msg, GetRequestingAgentID(remoteClient));
904 } 878 }
905 879
906 } 880 }
@@ -920,7 +894,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
920 msg.Position = Vector3.Zero; 894 msg.Position = Vector3.Zero;
921 msg.RegionID = UUID.Zero.Guid; 895 msg.RegionID = UUID.Zero.Guid;
922 896
923 GroupNoticeInfo info = m_groupData.GetGroupNotice(null, groupNoticeID); 897 GroupNoticeInfo info = m_groupData.GetGroupNotice(agentID, groupNoticeID);
924 if (info != null) 898 if (info != null)
925 { 899 {
926 msg.fromAgentID = info.GroupID.Guid; 900 msg.fromAgentID = info.GroupID.Guid;
@@ -947,7 +921,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
947 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 921 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
948 922
949 // Send agent information about his groups 923 // Send agent information about his groups
950 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 924 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
951 } 925 }
952 926
953 public void JoinGroupRequest(IClientAPI remoteClient, UUID groupID) 927 public void JoinGroupRequest(IClientAPI remoteClient, UUID groupID)
@@ -955,19 +929,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
955 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 929 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
956 930
957 // Should check to see if OpenEnrollment, or if there's an outstanding invitation 931 // Should check to see if OpenEnrollment, or if there's an outstanding invitation
958 m_groupData.AddAgentToGroup(GetClientGroupRequestID(remoteClient), remoteClient.AgentId, groupID, UUID.Zero); 932 m_groupData.AddAgentToGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID, UUID.Zero);
959 933
960 remoteClient.SendJoinGroupReply(groupID, true); 934 remoteClient.SendJoinGroupReply(groupID, true);
961 935
962 // Should this send updates to everyone in the group? 936 // Should this send updates to everyone in the group?
963 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 937 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
964 } 938 }
965 939
966 public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID) 940 public void LeaveGroupRequest(IClientAPI remoteClient, UUID groupID)
967 { 941 {
968 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 942 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
969 943
970 m_groupData.RemoveAgentFromGroup(GetClientGroupRequestID(remoteClient), remoteClient.AgentId, groupID); 944 m_groupData.RemoveAgentFromGroup(GetRequestingAgentID(remoteClient), GetRequestingAgentID(remoteClient), groupID);
971 945
972 remoteClient.SendLeaveGroupReply(groupID, true); 946 remoteClient.SendLeaveGroupReply(groupID, true);
973 947
@@ -975,21 +949,20 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
975 949
976 // SL sends out notifcations to the group messaging session that the person has left 950 // SL sends out notifcations to the group messaging session that the person has left
977 // Should this also update everyone who is in the group? 951 // Should this also update everyone who is in the group?
978 SendAgentGroupDataUpdate(remoteClient, remoteClient.AgentId); 952 SendAgentGroupDataUpdate(remoteClient, GetRequestingAgentID(remoteClient));
979 } 953 }
980 954
981 public void EjectGroupMemberRequest(IClientAPI remoteClient, UUID groupID, UUID ejecteeID) 955 public void EjectGroupMemberRequest(IClientAPI remoteClient, UUID groupID, UUID ejecteeID)
982 { 956 {
983 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 957 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
984 958
985 GroupRequestID grID = GetClientGroupRequestID(remoteClient);
986 959
987 // Todo: Security check? 960 // Todo: Security check?
988 m_groupData.RemoveAgentFromGroup(grID, ejecteeID, groupID); 961 m_groupData.RemoveAgentFromGroup(GetRequestingAgentID(remoteClient), ejecteeID, groupID);
989 962
990 remoteClient.SendEjectGroupMemberReply(remoteClient.AgentId, groupID, true); 963 remoteClient.SendEjectGroupMemberReply(GetRequestingAgentID(remoteClient), groupID, true);
991 964
992 GroupRecord groupInfo = m_groupData.GetGroupRecord(grID, groupID, null); 965 GroupRecord groupInfo = m_groupData.GetGroupRecord(GetRequestingAgentID(remoteClient), groupID, null);
993 UserProfileData userProfile = m_sceneList[0].CommsManager.UserService.GetUserProfile(ejecteeID); 966 UserProfileData userProfile = m_sceneList[0].CommsManager.UserService.GetUserProfile(ejecteeID);
994 967
995 if ((groupInfo == null) || (userProfile == null)) 968 if ((groupInfo == null) || (userProfile == null))
@@ -1002,7 +975,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1002 GridInstantMessage msg = new GridInstantMessage(); 975 GridInstantMessage msg = new GridInstantMessage();
1003 976
1004 msg.imSessionID = UUID.Zero.Guid; 977 msg.imSessionID = UUID.Zero.Guid;
1005 msg.fromAgentID = remoteClient.AgentId.Guid; 978 msg.fromAgentID = GetRequestingAgentID(remoteClient).Guid;
1006 // msg.fromAgentID = info.GroupID; 979 // msg.fromAgentID = info.GroupID;
1007 msg.toAgentID = ejecteeID.Guid; 980 msg.toAgentID = ejecteeID.Guid;
1008 //msg.timestamp = (uint)Util.UnixTimeSinceEpoch(); 981 //msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
@@ -1028,8 +1001,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1028 1001
1029 msg = new GridInstantMessage(); 1002 msg = new GridInstantMessage();
1030 msg.imSessionID = UUID.Zero.Guid; 1003 msg.imSessionID = UUID.Zero.Guid;
1031 msg.fromAgentID = remoteClient.AgentId.Guid; 1004 msg.fromAgentID = GetRequestingAgentID(remoteClient).Guid;
1032 msg.toAgentID = remoteClient.AgentId.Guid; 1005 msg.toAgentID = GetRequestingAgentID(remoteClient).Guid;
1033 msg.timestamp = 0; 1006 msg.timestamp = 0;
1034 msg.fromAgentName = remoteClient.Name; 1007 msg.fromAgentName = remoteClient.Name;
1035 if (userProfile != null) 1008 if (userProfile != null)
@@ -1047,7 +1020,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1047 msg.Position = Vector3.Zero; 1020 msg.Position = Vector3.Zero;
1048 msg.RegionID = remoteClient.Scene.RegionInfo.RegionID.Guid; 1021 msg.RegionID = remoteClient.Scene.RegionInfo.RegionID.Guid;
1049 msg.binaryBucket = new byte[0]; 1022 msg.binaryBucket = new byte[0];
1050 OutgoingInstantMessage(msg, remoteClient.AgentId); 1023 OutgoingInstantMessage(msg, GetRequestingAgentID(remoteClient));
1051 1024
1052 1025
1053 // SL sends out messages to everyone in the group 1026 // SL sends out messages to everyone in the group
@@ -1057,17 +1030,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1057 1030
1058 public void InviteGroupRequest(IClientAPI remoteClient, UUID groupID, UUID invitedAgentID, UUID roleID) 1031 public void InviteGroupRequest(IClientAPI remoteClient, UUID groupID, UUID invitedAgentID, UUID roleID)
1059 { 1032 {
1060 if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); 1033 if (m_debugEnabled)
1034 {
1035 m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
1036 m_log.DebugFormat("[GROUPS]: remoteClient({0}) groupID({0}) invitedAgentID({0}) roleID({0})", remoteClient, groupID, invitedAgentID, roleID);
1037 }
1038
1061 1039
1062 // Todo: Security check, probably also want to send some kind of notification 1040 // Todo: Security check, probably also want to send some kind of notification
1063 UUID InviteID = UUID.Random(); 1041 UUID InviteID = UUID.Random();
1064 GroupRequestID grid = GetClientGroupRequestID(remoteClient);
1065 1042
1066 m_groupData.AddAgentToGroupInvite(grid, InviteID, groupID, roleID, invitedAgentID); 1043 UUID requestingAgentID = GetRequestingAgentID(remoteClient);
1044 if (requestingAgentID == UUID.Zero)
1045 {
1046 m_log.Error("[GROUPS] Group Invite Requires a valid requesting agent to be specified");
1047 }
1048 m_groupData.AddAgentToGroupInvite(requestingAgentID, InviteID, groupID, roleID, invitedAgentID);
1067 1049
1068 // Check to see if the invite went through, if it did not then it's possible 1050 // Check to see if the invite went through, if it did not then it's possible
1069 // the remoteClient did not validate or did not have permission to invite. 1051 // the remoteClient did not validate or did not have permission to invite.
1070 GroupInviteInfo inviteInfo = m_groupData.GetAgentToGroupInvite(grid, InviteID); 1052 GroupInviteInfo inviteInfo = m_groupData.GetAgentToGroupInvite(GetRequestingAgentID(remoteClient), InviteID);
1071 1053
1072 if (inviteInfo != null) 1054 if (inviteInfo != null)
1073 { 1055 {
@@ -1079,7 +1061,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1079 1061
1080 msg.imSessionID = inviteUUID; 1062 msg.imSessionID = inviteUUID;
1081 1063
1082 // msg.fromAgentID = remoteClient.AgentId.Guid; 1064 // msg.fromAgentID = GetRequestingAgentID(remoteClient).Guid;
1083 msg.fromAgentID = groupID.Guid; 1065 msg.fromAgentID = groupID.Guid;
1084 msg.toAgentID = invitedAgentID.Guid; 1066 msg.toAgentID = invitedAgentID.Guid;
1085 //msg.timestamp = (uint)Util.UnixTimeSinceEpoch(); 1067 //msg.timestamp = (uint)Util.UnixTimeSinceEpoch();
@@ -1132,57 +1114,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1132 return child; 1114 return child;
1133 } 1115 }
1134 1116
1135 private GroupRequestID GetClientGroupRequestID(IClientAPI client)
1136 {
1137 if (client == null)
1138 {
1139 return new GroupRequestID();
1140 }
1141
1142 lock (m_clientRequestIDInfo)
1143 {
1144 if (!m_clientRequestIDInfo.ContainsKey(client.AgentId))
1145 {
1146 GroupRequestIDInfo info = new GroupRequestIDInfo();
1147 info.RequestID.AgentID = client.AgentId;
1148 info.RequestID.SessionID = client.SessionId;
1149
1150 UserProfileData userProfile = m_sceneList[0].CommsManager.UserService.GetUserProfile(client.AgentId);
1151 if (userProfile == null)
1152 {
1153 // This should be impossible. If I've been passed a reference to a client
1154 // that client should be registered with the UserService. So something
1155 // is horribly wrong somewhere.
1156
1157 m_log.WarnFormat("[GROUPS]: Could not find a user profile for {0} / {1}", client.Name, client.AgentId);
1158
1159 // Default to local user service and hope for the best?
1160 info.RequestID.UserServiceURL = m_sceneList[0].CommsManager.NetworkServersInfo.UserURL;
1161
1162 }
1163 else if (userProfile is ForeignUserProfileData)
1164 {
1165 // They aren't from around here
1166 ForeignUserProfileData fupd = (ForeignUserProfileData)userProfile;
1167 info.RequestID.UserServiceURL = fupd.UserServerURI;
1168 }
1169 else
1170 {
1171 // They're a local user, use this:
1172 info.RequestID.UserServiceURL = m_sceneList[0].CommsManager.NetworkServersInfo.UserURL;
1173 }
1174
1175 m_clientRequestIDInfo.Add(client.AgentId, info);
1176 }
1177
1178 m_clientRequestIDInfo[client.AgentId].LastUsedTMStamp = DateTime.Now;
1179
1180 return m_clientRequestIDInfo[client.AgentId].RequestID;
1181 }
1182// Unreachable code!
1183// return new GroupRequestID();
1184 }
1185
1186 /// <summary> 1117 /// <summary>
1187 /// Send 'remoteClient' the group membership 'data' for agent 'dataForAgentID'. 1118 /// Send 'remoteClient' the group membership 'data' for agent 'dataForAgentID'.
1188 /// </summary> 1119 /// </summary>
@@ -1231,6 +1162,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1231 llDataStruct.Add("GroupData", GroupData); 1162 llDataStruct.Add("GroupData", GroupData);
1232 llDataStruct.Add("NewGroupData", NewGroupData); 1163 llDataStruct.Add("NewGroupData", NewGroupData);
1233 1164
1165 if (m_debugEnabled)
1166 {
1167 m_log.InfoFormat("[GROUPS]: {0}", OSDParser.SerializeJsonString(llDataStruct));
1168 }
1169
1234 IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>(); 1170 IEventQueue queue = remoteClient.Scene.RequestModuleInterface<IEventQueue>();
1235 1171
1236 if (queue != null) 1172 if (queue != null)
@@ -1308,7 +1244,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1308 /// <returns></returns> 1244 /// <returns></returns>
1309 private GroupMembershipData[] GetProfileListedGroupMemberships(IClientAPI requestingClient, UUID dataForAgentID) 1245 private GroupMembershipData[] GetProfileListedGroupMemberships(IClientAPI requestingClient, UUID dataForAgentID)
1310 { 1246 {
1311 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(GetClientGroupRequestID(requestingClient), dataForAgentID); 1247 List<GroupMembershipData> membershipData = m_groupData.GetAgentGroupMemberships(requestingClient.AgentId, dataForAgentID);
1312 GroupMembershipData[] membershipArray; 1248 GroupMembershipData[] membershipArray;
1313 1249
1314 if (requestingClient.AgentId != dataForAgentID) 1250 if (requestingClient.AgentId != dataForAgentID)
@@ -1330,7 +1266,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1330 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId); 1266 m_log.InfoFormat("[GROUPS]: Get group membership information for {0} requested by {1}", dataForAgentID, requestingClient.AgentId);
1331 foreach (GroupMembershipData membership in membershipArray) 1267 foreach (GroupMembershipData membership in membershipArray)
1332 { 1268 {
1333 m_log.InfoFormat("[GROUPS]: {0} :: {1} - {2}", dataForAgentID, membership.GroupName, membership.GroupTitle); 1269 m_log.InfoFormat("[GROUPS]: {0} :: {1} - {2} - {3}", dataForAgentID, membership.GroupName, membership.GroupTitle, membership.GroupPowers);
1334 } 1270 }
1335 } 1271 }
1336 1272
@@ -1389,6 +1325,23 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1389 } 1325 }
1390 1326
1391 #endregion 1327 #endregion
1328
1329 private UUID GetRequestingAgentID(IClientAPI client)
1330 {
1331 UUID requestingAgentID = UUID.Zero;
1332 if (client != null)
1333 {
1334 requestingAgentID = client.AgentId;
1335 }
1336 return requestingAgentID;
1337 }
1392 } 1338 }
1393 1339
1340 public class GroupNoticeInfo
1341 {
1342 public GroupNoticeData noticeData = new GroupNoticeData();
1343 public UUID GroupID = UUID.Zero;
1344 public string Message = string.Empty;
1345 public byte[] BinaryBucket = new byte[0];
1346 }
1394} 1347}
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
index 9e0fa2d..a046e09 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
@@ -36,42 +36,47 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
36{ 36{
37 interface IGroupsServicesConnector 37 interface IGroupsServicesConnector
38 { 38 {
39 UUID CreateGroup(GroupRequestID requestID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID); 39 UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID);
40 void UpdateGroup(GroupRequestID requestID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish); 40 void UpdateGroup(UUID RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish);
41 GroupRecord GetGroupRecord(GroupRequestID requestID, UUID GroupID, string GroupName); 41 GroupRecord GetGroupRecord(UUID RequestingAgentID, UUID GroupID, string GroupName);
42 List<DirGroupsReplyData> FindGroups(GroupRequestID requestID, string search); 42 List<DirGroupsReplyData> FindGroups(UUID RequestingAgentID, string search);
43 List<GroupMembersData> GetGroupMembers(GroupRequestID requestID, UUID GroupID); 43 List<GroupMembersData> GetGroupMembers(UUID RequestingAgentID, UUID GroupID);
44 44
45 void AddGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers); 45 void AddGroupRole(UUID RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers);
46 void UpdateGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers); 46 void UpdateGroupRole(UUID RequestingAgentID, UUID groupID, UUID roleID, string name, string description, string title, ulong powers);
47 void RemoveGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID); 47 void RemoveGroupRole(UUID RequestingAgentID, UUID groupID, UUID roleID);
48 List<GroupRolesData> GetGroupRoles(GroupRequestID requestID, UUID GroupID); 48 List<GroupRolesData> GetGroupRoles(UUID RequestingAgentID, UUID GroupID);
49 List<GroupRoleMembersData> GetGroupRoleMembers(GroupRequestID requestID, UUID GroupID); 49 List<GroupRoleMembersData> GetGroupRoleMembers(UUID RequestingAgentID, UUID GroupID);
50 50
51 void AddAgentToGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID); 51 void AddAgentToGroup(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID);
52 void RemoveAgentFromGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID); 52 void RemoveAgentFromGroup(UUID RequestingAgentID, UUID AgentID, UUID GroupID);
53 53
54 void AddAgentToGroupInvite(GroupRequestID requestID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID); 54 void AddAgentToGroupInvite(UUID RequestingAgentID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID);
55 GroupInviteInfo GetAgentToGroupInvite(GroupRequestID requestID, UUID inviteID); 55 GroupInviteInfo GetAgentToGroupInvite(UUID RequestingAgentID, UUID inviteID);
56 void RemoveAgentToGroupInvite(GroupRequestID requestID, UUID inviteID); 56 void RemoveAgentToGroupInvite(UUID RequestingAgentID, UUID inviteID);
57 57
58 void AddAgentToGroupRole(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID);
59 void RemoveAgentFromGroupRole(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID);
60 List<GroupRolesData> GetAgentGroupRoles(UUID RequestingAgentID, UUID AgentID, UUID GroupID);
58 61
59 void AddAgentToGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID); 62 void SetAgentActiveGroup(UUID RequestingAgentID, UUID AgentID, UUID GroupID);
60 void RemoveAgentFromGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID); 63 GroupMembershipData GetAgentActiveMembership(UUID RequestingAgentID, UUID AgentID);
61 List<GroupRolesData> GetAgentGroupRoles(GroupRequestID requestID, UUID AgentID, UUID GroupID);
62 64
63 void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID); 65 void SetAgentActiveGroupRole(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID);
64 GroupMembershipData GetAgentActiveMembership(GroupRequestID requestID, UUID AgentID); 66 void SetAgentGroupInfo(UUID RequestingAgentID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile);
65 67
66 void SetAgentActiveGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID); 68 GroupMembershipData GetAgentGroupMembership(UUID RequestingAgentID, UUID AgentID, UUID GroupID);
67 void SetAgentGroupInfo(GroupRequestID requestID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile); 69 List<GroupMembershipData> GetAgentGroupMemberships(UUID RequestingAgentID, UUID AgentID);
68 70
69 GroupMembershipData GetAgentGroupMembership(GroupRequestID requestID, UUID AgentID, UUID GroupID); 71 void AddGroupNotice(UUID RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket);
70 List<GroupMembershipData> GetAgentGroupMemberships(GroupRequestID requestID, UUID AgentID); 72 GroupNoticeInfo GetGroupNotice(UUID RequestingAgentID, UUID noticeID);
73 List<GroupNoticeData> GetGroupNotices(UUID RequestingAgentID, UUID GroupID);
71 74
72 void AddGroupNotice(GroupRequestID requestID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket); 75 void ResetAgentGroupChatSessions(UUID agentID);
73 GroupNoticeInfo GetGroupNotice(GroupRequestID requestID, UUID noticeID); 76 bool hasAgentBeenInvitedToGroupChatSession(UUID agentID, UUID groupID);
74 List<GroupNoticeData> GetGroupNotices(GroupRequestID requestID, UUID GroupID); 77 bool hasAgentDroppedGroupChatSession(UUID agentID, UUID groupID);
78 void AgentDroppedFromGroupChatSession(UUID agentID, UUID groupID);
79 void AgentInvitedToGroupChatSession(UUID agentID, UUID groupID);
75 } 80 }
76 81
77 public class GroupInviteInfo 82 public class GroupInviteInfo
@@ -81,11 +86,4 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
81 public UUID AgentID = UUID.Zero; 86 public UUID AgentID = UUID.Zero;
82 public UUID InviteID = UUID.Zero; 87 public UUID InviteID = UUID.Zero;
83 } 88 }
84
85 public class GroupRequestID
86 {
87 public UUID AgentID = UUID.Zero;
88 public string UserServiceURL = string.Empty;
89 public UUID SessionID = UUID.Zero;
90 }
91} 89}
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
index 964d0bb..861731c 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
@@ -40,6 +40,7 @@ using OpenMetaverse;
40using OpenMetaverse.StructuredData; 40using OpenMetaverse.StructuredData;
41 41
42using OpenSim.Framework; 42using OpenSim.Framework;
43using OpenSim.Framework.Communications;
43using OpenSim.Region.Framework.Interfaces; 44using OpenSim.Region.Framework.Interfaces;
44 45
45namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups 46namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
@@ -47,9 +48,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
47 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] 48 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
48 public class XmlRpcGroupsServicesConnectorModule : ISharedRegionModule, IGroupsServicesConnector 49 public class XmlRpcGroupsServicesConnectorModule : ISharedRegionModule, IGroupsServicesConnector
49 { 50 {
50 private static readonly ILog m_log = 51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
51 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
52
53 52
54 public const GroupPowers m_DefaultEveryonePowers = GroupPowers.AllowSetHome | 53 public const GroupPowers m_DefaultEveryonePowers = GroupPowers.AllowSetHome |
55 GroupPowers.Accountable | 54 GroupPowers.Accountable |
@@ -61,13 +60,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
61 60
62 private bool m_connectorEnabled = false; 61 private bool m_connectorEnabled = false;
63 62
64 private string m_serviceURL = string.Empty; 63 private string m_groupsServerURI = string.Empty;
65 64
66 private bool m_disableKeepAlive = false; 65 private bool m_disableKeepAlive = false;
67 66
68 private string m_groupReadKey = string.Empty; 67 private string m_groupReadKey = string.Empty;
69 private string m_groupWriteKey = string.Empty; 68 private string m_groupWriteKey = string.Empty;
70 69
70 private IUserService m_userService = null;
71 private CommunicationsManager m_commManager = null;
72
73 private bool m_debugEnabled = false;
74
75
76 // Used to track which agents are have dropped from a group chat session
77 // Should be reset per agent, on logon
78 // TODO: move this to Flotsam XmlRpc Service
79 // SessionID, List<AgentID>
80 private Dictionary<UUID, List<UUID>> m_groupsAgentsDroppedFromChatSession = new Dictionary<UUID, List<UUID>>();
81 private Dictionary<UUID, List<UUID>> m_groupsAgentsInvitedToChatSession = new Dictionary<UUID, List<UUID>>();
82
71 83
72 #region IRegionModuleBase Members 84 #region IRegionModuleBase Members
73 85
@@ -104,11 +116,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
104 116
105 m_log.InfoFormat("[GROUPS-CONNECTOR]: Initializing {0}", this.Name); 117 m_log.InfoFormat("[GROUPS-CONNECTOR]: Initializing {0}", this.Name);
106 118
107 m_serviceURL = groupsConfig.GetString("XmlRpcServiceURL", string.Empty); 119 m_groupsServerURI = groupsConfig.GetString("GroupsServerURI", groupsConfig.GetString("XmlRpcServiceURL", string.Empty));
108 if ((m_serviceURL == null) || 120 if ((m_groupsServerURI == null) ||
109 (m_serviceURL == string.Empty)) 121 (m_groupsServerURI == string.Empty))
110 { 122 {
111 m_log.ErrorFormat("Please specify a valid URL for XmlRpcServiceURL in OpenSim.ini, [Groups]"); 123 m_log.ErrorFormat("Please specify a valid URL for GroupsServerURI in OpenSim.ini, [Groups]");
112 m_connectorEnabled = false; 124 m_connectorEnabled = false;
113 return; 125 return;
114 } 126 }
@@ -118,6 +130,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
118 m_groupReadKey = groupsConfig.GetString("XmlRpcServiceReadKey", string.Empty); 130 m_groupReadKey = groupsConfig.GetString("XmlRpcServiceReadKey", string.Empty);
119 m_groupWriteKey = groupsConfig.GetString("XmlRpcServiceWriteKey", string.Empty); 131 m_groupWriteKey = groupsConfig.GetString("XmlRpcServiceWriteKey", string.Empty);
120 132
133 m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true);
134
135
121 // If we got all the config options we need, lets start'er'up 136 // If we got all the config options we need, lets start'er'up
122 m_connectorEnabled = true; 137 m_connectorEnabled = true;
123 } 138 }
@@ -131,13 +146,23 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
131 public void AddRegion(OpenSim.Region.Framework.Scenes.Scene scene) 146 public void AddRegion(OpenSim.Region.Framework.Scenes.Scene scene)
132 { 147 {
133 if (m_connectorEnabled) 148 if (m_connectorEnabled)
149 {
134 scene.RegisterModuleInterface<IGroupsServicesConnector>(this); 150 scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
151
152 if (m_userService == null)
153 {
154 m_userService = scene.CommsManager.UserService;
155 m_commManager = scene.CommsManager;
156 }
157 }
135 } 158 }
136 159
137 public void RemoveRegion(OpenSim.Region.Framework.Scenes.Scene scene) 160 public void RemoveRegion(OpenSim.Region.Framework.Scenes.Scene scene)
138 { 161 {
139 if (scene.RequestModuleInterface<IGroupsServicesConnector>() == this) 162 if (scene.RequestModuleInterface<IGroupsServicesConnector>() == this)
163 {
140 scene.UnregisterModuleInterface<IGroupsServicesConnector>(this); 164 scene.UnregisterModuleInterface<IGroupsServicesConnector>(this);
165 }
141 } 166 }
142 167
143 public void RegionLoaded(OpenSim.Region.Framework.Scenes.Scene scene) 168 public void RegionLoaded(OpenSim.Region.Framework.Scenes.Scene scene)
@@ -157,14 +182,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
157 182
158 #endregion 183 #endregion
159 184
160
161
162 #region IGroupsServicesConnector Members 185 #region IGroupsServicesConnector Members
163 186
164 /// <summary> 187 /// <summary>
165 /// Create a Group, including Everyone and Owners Role, place FounderID in both groups, select Owner as selected role, and newly created group as agent's active role. 188 /// Create a Group, including Everyone and Owners Role, place FounderID in both groups, select Owner as selected role, and newly created group as agent's active role.
166 /// </summary> 189 /// </summary>
167 public UUID CreateGroup(GroupRequestID requestID, string name, string charter, bool showInList, UUID insigniaID, 190 public UUID CreateGroup(UUID requestingAgentID, string name, string charter, bool showInList, UUID insigniaID,
168 int membershipFee, bool openEnrollment, bool allowPublish, 191 int membershipFee, bool openEnrollment, bool allowPublish,
169 bool maturePublish, UUID founderID) 192 bool maturePublish, UUID founderID)
170 { 193 {
@@ -236,7 +259,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
236 259
237 260
238 261
239 Hashtable respData = XmlRpcCall(requestID, "groups.createGroup", param); 262 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.createGroup", param);
240 263
241 if (respData.Contains("error")) 264 if (respData.Contains("error"))
242 { 265 {
@@ -248,7 +271,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
248 return UUID.Parse((string)respData["GroupID"]); 271 return UUID.Parse((string)respData["GroupID"]);
249 } 272 }
250 273
251 public void UpdateGroup(GroupRequestID requestID, UUID groupID, string charter, bool showInList, 274 public void UpdateGroup(UUID requestingAgentID, UUID groupID, string charter, bool showInList,
252 UUID insigniaID, int membershipFee, bool openEnrollment, 275 UUID insigniaID, int membershipFee, bool openEnrollment,
253 bool allowPublish, bool maturePublish) 276 bool allowPublish, bool maturePublish)
254 { 277 {
@@ -262,10 +285,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
262 param["AllowPublish"] = allowPublish == true ? 1 : 0; 285 param["AllowPublish"] = allowPublish == true ? 1 : 0;
263 param["MaturePublish"] = maturePublish == true ? 1 : 0; 286 param["MaturePublish"] = maturePublish == true ? 1 : 0;
264 287
265 XmlRpcCall(requestID, "groups.updateGroup", param); 288 XmlRpcCall(requestingAgentID, "groups.updateGroup", param);
266 } 289 }
267 290
268 public void AddGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID, string name, string description, 291 public void AddGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
269 string title, ulong powers) 292 string title, ulong powers)
270 { 293 {
271 Hashtable param = new Hashtable(); 294 Hashtable param = new Hashtable();
@@ -276,19 +299,19 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
276 param["Title"] = title; 299 param["Title"] = title;
277 param["Powers"] = powers.ToString(); 300 param["Powers"] = powers.ToString();
278 301
279 XmlRpcCall(requestID, "groups.addRoleToGroup", param); 302 XmlRpcCall(requestingAgentID, "groups.addRoleToGroup", param);
280 } 303 }
281 304
282 public void RemoveGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID) 305 public void RemoveGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID)
283 { 306 {
284 Hashtable param = new Hashtable(); 307 Hashtable param = new Hashtable();
285 param["GroupID"] = groupID.ToString(); 308 param["GroupID"] = groupID.ToString();
286 param["RoleID"] = roleID.ToString(); 309 param["RoleID"] = roleID.ToString();
287 310
288 XmlRpcCall(requestID, "groups.removeRoleFromGroup", param); 311 XmlRpcCall(requestingAgentID, "groups.removeRoleFromGroup", param);
289 } 312 }
290 313
291 public void UpdateGroupRole(GroupRequestID requestID, UUID groupID, UUID roleID, string name, string description, 314 public void UpdateGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
292 string title, ulong powers) 315 string title, ulong powers)
293 { 316 {
294 Hashtable param = new Hashtable(); 317 Hashtable param = new Hashtable();
@@ -308,10 +331,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
308 } 331 }
309 param["Powers"] = powers.ToString(); 332 param["Powers"] = powers.ToString();
310 333
311 XmlRpcCall(requestID, "groups.updateGroupRole", param); 334 XmlRpcCall(requestingAgentID, "groups.updateGroupRole", param);
312 } 335 }
313 336
314 public GroupRecord GetGroupRecord(GroupRequestID requestID, UUID GroupID, string GroupName) 337 public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string GroupName)
315 { 338 {
316 Hashtable param = new Hashtable(); 339 Hashtable param = new Hashtable();
317 if (GroupID != UUID.Zero) 340 if (GroupID != UUID.Zero)
@@ -323,7 +346,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
323 param["Name"] = GroupName.ToString(); 346 param["Name"] = GroupName.ToString();
324 } 347 }
325 348
326 Hashtable respData = XmlRpcCall(requestID, "groups.getGroup", param); 349 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroup", param);
327 350
328 if (respData.Contains("error")) 351 if (respData.Contains("error"))
329 { 352 {
@@ -334,12 +357,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
334 357
335 } 358 }
336 359
337 public GroupProfileData GetMemberGroupProfile(GroupRequestID requestID, UUID GroupID, UUID AgentID) 360 public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID)
338 { 361 {
339 Hashtable param = new Hashtable(); 362 Hashtable param = new Hashtable();
340 param["GroupID"] = GroupID.ToString(); 363 param["GroupID"] = GroupID.ToString();
341 364
342 Hashtable respData = XmlRpcCall(requestID, "groups.getGroup", param); 365 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroup", param);
343 366
344 if (respData.Contains("error")) 367 if (respData.Contains("error"))
345 { 368 {
@@ -347,38 +370,35 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
347 return new GroupProfileData(); 370 return new GroupProfileData();
348 } 371 }
349 372
350 GroupMembershipData MemberInfo = GetAgentGroupMembership(requestID, AgentID, GroupID); 373 GroupMembershipData MemberInfo = GetAgentGroupMembership(requestingAgentID, AgentID, GroupID);
351 GroupProfileData MemberGroupProfile = GroupProfileHashtableToGroupProfileData(respData); 374 GroupProfileData MemberGroupProfile = GroupProfileHashtableToGroupProfileData(respData);
352 375
353 MemberGroupProfile.MemberTitle = MemberInfo.GroupTitle; 376 MemberGroupProfile.MemberTitle = MemberInfo.GroupTitle;
354 MemberGroupProfile.PowersMask = MemberInfo.GroupPowers; 377 MemberGroupProfile.PowersMask = MemberInfo.GroupPowers;
355 378
356 return MemberGroupProfile; 379 return MemberGroupProfile;
357
358 } 380 }
359 381
360 382 public void SetAgentActiveGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID)
361
362 public void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID)
363 { 383 {
364 Hashtable param = new Hashtable(); 384 Hashtable param = new Hashtable();
365 param["AgentID"] = AgentID.ToString(); 385 param["AgentID"] = AgentID.ToString();
366 param["GroupID"] = GroupID.ToString(); 386 param["GroupID"] = GroupID.ToString();
367 387
368 XmlRpcCall(requestID, "groups.setAgentActiveGroup", param); 388 XmlRpcCall(requestingAgentID, "groups.setAgentActiveGroup", param);
369 } 389 }
370 390
371 public void SetAgentActiveGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID) 391 public void SetAgentActiveGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
372 { 392 {
373 Hashtable param = new Hashtable(); 393 Hashtable param = new Hashtable();
374 param["AgentID"] = AgentID.ToString(); 394 param["AgentID"] = AgentID.ToString();
375 param["GroupID"] = GroupID.ToString(); 395 param["GroupID"] = GroupID.ToString();
376 param["SelectedRoleID"] = RoleID.ToString(); 396 param["SelectedRoleID"] = RoleID.ToString();
377 397
378 XmlRpcCall(requestID, "groups.setAgentGroupInfo", param); 398 XmlRpcCall(requestingAgentID, "groups.setAgentGroupInfo", param);
379 } 399 }
380 400
381 public void SetAgentGroupInfo(GroupRequestID requestID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile) 401 public void SetAgentGroupInfo(UUID requestingAgentID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
382 { 402 {
383 Hashtable param = new Hashtable(); 403 Hashtable param = new Hashtable();
384 param["AgentID"] = AgentID.ToString(); 404 param["AgentID"] = AgentID.ToString();
@@ -386,11 +406,11 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
386 param["AcceptNotices"] = AcceptNotices ? "1" : "0"; 406 param["AcceptNotices"] = AcceptNotices ? "1" : "0";
387 param["ListInProfile"] = ListInProfile ? "1" : "0"; 407 param["ListInProfile"] = ListInProfile ? "1" : "0";
388 408
389 XmlRpcCall(requestID, "groups.setAgentGroupInfo", param); 409 XmlRpcCall(requestingAgentID, "groups.setAgentGroupInfo", param);
390 410
391 } 411 }
392 412
393 public void AddAgentToGroupInvite(GroupRequestID requestID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID) 413 public void AddAgentToGroupInvite(UUID requestingAgentID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID)
394 { 414 {
395 Hashtable param = new Hashtable(); 415 Hashtable param = new Hashtable();
396 param["InviteID"] = inviteID.ToString(); 416 param["InviteID"] = inviteID.ToString();
@@ -398,16 +418,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
398 param["RoleID"] = roleID.ToString(); 418 param["RoleID"] = roleID.ToString();
399 param["GroupID"] = groupID.ToString(); 419 param["GroupID"] = groupID.ToString();
400 420
401 XmlRpcCall(requestID, "groups.addAgentToGroupInvite", param); 421 XmlRpcCall(requestingAgentID, "groups.addAgentToGroupInvite", param);
402 422
403 } 423 }
404 424
405 public GroupInviteInfo GetAgentToGroupInvite(GroupRequestID requestID, UUID inviteID) 425 public GroupInviteInfo GetAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
406 { 426 {
407 Hashtable param = new Hashtable(); 427 Hashtable param = new Hashtable();
408 param["InviteID"] = inviteID.ToString(); 428 param["InviteID"] = inviteID.ToString();
409 429
410 Hashtable respData = XmlRpcCall(requestID, "groups.getAgentToGroupInvite", param); 430 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentToGroupInvite", param);
411 431
412 if (respData.Contains("error")) 432 if (respData.Contains("error"))
413 { 433 {
@@ -423,60 +443,59 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
423 return inviteInfo; 443 return inviteInfo;
424 } 444 }
425 445
426 public void RemoveAgentToGroupInvite(GroupRequestID requestID, UUID inviteID) 446 public void RemoveAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
427 { 447 {
428 Hashtable param = new Hashtable(); 448 Hashtable param = new Hashtable();
429 param["InviteID"] = inviteID.ToString(); 449 param["InviteID"] = inviteID.ToString();
430 450
431 XmlRpcCall(requestID, "groups.removeAgentToGroupInvite", param); 451 XmlRpcCall(requestingAgentID, "groups.removeAgentToGroupInvite", param);
432 } 452 }
433 453
434 public void AddAgentToGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID) 454 public void AddAgentToGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
435 { 455 {
436 Hashtable param = new Hashtable(); 456 Hashtable param = new Hashtable();
437 param["AgentID"] = AgentID.ToString(); 457 param["AgentID"] = AgentID.ToString();
438 param["GroupID"] = GroupID.ToString(); 458 param["GroupID"] = GroupID.ToString();
439 param["RoleID"] = RoleID.ToString(); 459 param["RoleID"] = RoleID.ToString();
440 460
441 XmlRpcCall(requestID, "groups.addAgentToGroup", param); 461 XmlRpcCall(requestingAgentID, "groups.addAgentToGroup", param);
442 } 462 }
443 463
444 public void RemoveAgentFromGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID) 464 public void RemoveAgentFromGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID)
445 { 465 {
446 Hashtable param = new Hashtable(); 466 Hashtable param = new Hashtable();
447 param["AgentID"] = AgentID.ToString(); 467 param["AgentID"] = AgentID.ToString();
448 param["GroupID"] = GroupID.ToString(); 468 param["GroupID"] = GroupID.ToString();
449 469
450 XmlRpcCall(requestID, "groups.removeAgentFromGroup", param); 470 XmlRpcCall(requestingAgentID, "groups.removeAgentFromGroup", param);
451 } 471 }
452 472
453 public void AddAgentToGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID) 473 public void AddAgentToGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
454 { 474 {
455 Hashtable param = new Hashtable(); 475 Hashtable param = new Hashtable();
456 param["AgentID"] = AgentID.ToString(); 476 param["AgentID"] = AgentID.ToString();
457 param["GroupID"] = GroupID.ToString(); 477 param["GroupID"] = GroupID.ToString();
458 param["RoleID"] = RoleID.ToString(); 478 param["RoleID"] = RoleID.ToString();
459 479
460 XmlRpcCall(requestID, "groups.addAgentToGroupRole", param); 480 XmlRpcCall(requestingAgentID, "groups.addAgentToGroupRole", param);
461 } 481 }
462 482
463 public void RemoveAgentFromGroupRole(GroupRequestID requestID, UUID AgentID, UUID GroupID, UUID RoleID) 483 public void RemoveAgentFromGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
464 { 484 {
465 Hashtable param = new Hashtable(); 485 Hashtable param = new Hashtable();
466 param["AgentID"] = AgentID.ToString(); 486 param["AgentID"] = AgentID.ToString();
467 param["GroupID"] = GroupID.ToString(); 487 param["GroupID"] = GroupID.ToString();
468 param["RoleID"] = RoleID.ToString(); 488 param["RoleID"] = RoleID.ToString();
469 489
470 XmlRpcCall(requestID, "groups.removeAgentFromGroupRole", param); 490 XmlRpcCall(requestingAgentID, "groups.removeAgentFromGroupRole", param);
471 } 491 }
472 492
473 493 public List<DirGroupsReplyData> FindGroups(UUID requestingAgentID, string search)
474 public List<DirGroupsReplyData> FindGroups(GroupRequestID requestID, string search)
475 { 494 {
476 Hashtable param = new Hashtable(); 495 Hashtable param = new Hashtable();
477 param["Search"] = search; 496 param["Search"] = search;
478 497
479 Hashtable respData = XmlRpcCall(requestID, "groups.findGroups", param); 498 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.findGroups", param);
480 499
481 List<DirGroupsReplyData> findings = new List<DirGroupsReplyData>(); 500 List<DirGroupsReplyData> findings = new List<DirGroupsReplyData>();
482 501
@@ -498,13 +517,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
498 return findings; 517 return findings;
499 } 518 }
500 519
501 public GroupMembershipData GetAgentGroupMembership(GroupRequestID requestID, UUID AgentID, UUID GroupID) 520 public GroupMembershipData GetAgentGroupMembership(UUID requestingAgentID, UUID AgentID, UUID GroupID)
502 { 521 {
503 Hashtable param = new Hashtable(); 522 Hashtable param = new Hashtable();
504 param["AgentID"] = AgentID.ToString(); 523 param["AgentID"] = AgentID.ToString();
505 param["GroupID"] = GroupID.ToString(); 524 param["GroupID"] = GroupID.ToString();
506 525
507 Hashtable respData = XmlRpcCall(requestID, "groups.getAgentGroupMembership", param); 526 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentGroupMembership", param);
508 527
509 if (respData.Contains("error")) 528 if (respData.Contains("error"))
510 { 529 {
@@ -516,12 +535,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
516 return data; 535 return data;
517 } 536 }
518 537
519 public GroupMembershipData GetAgentActiveMembership(GroupRequestID requestID, UUID AgentID) 538 public GroupMembershipData GetAgentActiveMembership(UUID requestingAgentID, UUID AgentID)
520 { 539 {
521 Hashtable param = new Hashtable(); 540 Hashtable param = new Hashtable();
522 param["AgentID"] = AgentID.ToString(); 541 param["AgentID"] = AgentID.ToString();
523 542
524 Hashtable respData = XmlRpcCall(requestID, "groups.getAgentActiveMembership", param); 543 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentActiveMembership", param);
525 544
526 if (respData.Contains("error")) 545 if (respData.Contains("error"))
527 { 546 {
@@ -531,13 +550,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
531 return HashTableToGroupMembershipData(respData); 550 return HashTableToGroupMembershipData(respData);
532 } 551 }
533 552
534 553 public List<GroupMembershipData> GetAgentGroupMemberships(UUID requestingAgentID, UUID AgentID)
535 public List<GroupMembershipData> GetAgentGroupMemberships(GroupRequestID requestID, UUID AgentID)
536 { 554 {
537 Hashtable param = new Hashtable(); 555 Hashtable param = new Hashtable();
538 param["AgentID"] = AgentID.ToString(); 556 param["AgentID"] = AgentID.ToString();
539 557
540 Hashtable respData = XmlRpcCall(requestID, "groups.getAgentGroupMemberships", param); 558 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentGroupMemberships", param);
541 559
542 List<GroupMembershipData> memberships = new List<GroupMembershipData>(); 560 List<GroupMembershipData> memberships = new List<GroupMembershipData>();
543 561
@@ -552,13 +570,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
552 return memberships; 570 return memberships;
553 } 571 }
554 572
555 public List<GroupRolesData> GetAgentGroupRoles(GroupRequestID requestID, UUID AgentID, UUID GroupID) 573 public List<GroupRolesData> GetAgentGroupRoles(UUID requestingAgentID, UUID AgentID, UUID GroupID)
556 { 574 {
557 Hashtable param = new Hashtable(); 575 Hashtable param = new Hashtable();
558 param["AgentID"] = AgentID.ToString(); 576 param["AgentID"] = AgentID.ToString();
559 param["GroupID"] = GroupID.ToString(); 577 param["GroupID"] = GroupID.ToString();
560 578
561 Hashtable respData = XmlRpcCall(requestID, "groups.getAgentRoles", param); 579 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getAgentRoles", param);
562 580
563 List<GroupRolesData> Roles = new List<GroupRolesData>(); 581 List<GroupRolesData> Roles = new List<GroupRolesData>();
564 582
@@ -584,12 +602,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
584 602
585 } 603 }
586 604
587 public List<GroupRolesData> GetGroupRoles(GroupRequestID requestID, UUID GroupID) 605 public List<GroupRolesData> GetGroupRoles(UUID requestingAgentID, UUID GroupID)
588 { 606 {
589 Hashtable param = new Hashtable(); 607 Hashtable param = new Hashtable();
590 param["GroupID"] = GroupID.ToString(); 608 param["GroupID"] = GroupID.ToString();
591 609
592 Hashtable respData = XmlRpcCall(requestID, "groups.getGroupRoles", param); 610 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroupRoles", param);
593 611
594 List<GroupRolesData> Roles = new List<GroupRolesData>(); 612 List<GroupRolesData> Roles = new List<GroupRolesData>();
595 613
@@ -617,12 +635,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
617 635
618 636
619 637
620 public List<GroupMembersData> GetGroupMembers(GroupRequestID requestID, UUID GroupID) 638 public List<GroupMembersData> GetGroupMembers(UUID requestingAgentID, UUID GroupID)
621 { 639 {
622 Hashtable param = new Hashtable(); 640 Hashtable param = new Hashtable();
623 param["GroupID"] = GroupID.ToString(); 641 param["GroupID"] = GroupID.ToString();
624 642
625 Hashtable respData = XmlRpcCall(requestID, "groups.getGroupMembers", param); 643 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroupMembers", param);
626 644
627 List<GroupMembersData> members = new List<GroupMembersData>(); 645 List<GroupMembersData> members = new List<GroupMembersData>();
628 646
@@ -650,12 +668,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
650 668
651 } 669 }
652 670
653 public List<GroupRoleMembersData> GetGroupRoleMembers(GroupRequestID requestID, UUID GroupID) 671 public List<GroupRoleMembersData> GetGroupRoleMembers(UUID requestingAgentID, UUID GroupID)
654 { 672 {
655 Hashtable param = new Hashtable(); 673 Hashtable param = new Hashtable();
656 param["GroupID"] = GroupID.ToString(); 674 param["GroupID"] = GroupID.ToString();
657 675
658 Hashtable respData = XmlRpcCall(requestID, "groups.getGroupRoleMembers", param); 676 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroupRoleMembers", param);
659 677
660 List<GroupRoleMembersData> members = new List<GroupRoleMembersData>(); 678 List<GroupRoleMembersData> members = new List<GroupRoleMembersData>();
661 679
@@ -674,12 +692,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
674 return members; 692 return members;
675 } 693 }
676 694
677 public List<GroupNoticeData> GetGroupNotices(GroupRequestID requestID, UUID GroupID) 695 public List<GroupNoticeData> GetGroupNotices(UUID requestingAgentID, UUID GroupID)
678 { 696 {
679 Hashtable param = new Hashtable(); 697 Hashtable param = new Hashtable();
680 param["GroupID"] = GroupID.ToString(); 698 param["GroupID"] = GroupID.ToString();
681 699
682 Hashtable respData = XmlRpcCall(requestID, "groups.getGroupNotices", param); 700 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroupNotices", param);
683 701
684 List<GroupNoticeData> values = new List<GroupNoticeData>(); 702 List<GroupNoticeData> values = new List<GroupNoticeData>();
685 703
@@ -701,12 +719,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
701 return values; 719 return values;
702 720
703 } 721 }
704 public GroupNoticeInfo GetGroupNotice(GroupRequestID requestID, UUID noticeID) 722 public GroupNoticeInfo GetGroupNotice(UUID requestingAgentID, UUID noticeID)
705 { 723 {
706 Hashtable param = new Hashtable(); 724 Hashtable param = new Hashtable();
707 param["NoticeID"] = noticeID.ToString(); 725 param["NoticeID"] = noticeID.ToString();
708 726
709 Hashtable respData = XmlRpcCall(requestID, "groups.getGroupNotice", param); 727 Hashtable respData = XmlRpcCall(requestingAgentID, "groups.getGroupNotice", param);
710 728
711 729
712 if (respData.Contains("error")) 730 if (respData.Contains("error"))
@@ -732,7 +750,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
732 750
733 return data; 751 return data;
734 } 752 }
735 public void AddGroupNotice(GroupRequestID requestID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket) 753 public void AddGroupNotice(UUID requestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket)
736 { 754 {
737 string binBucket = OpenMetaverse.Utils.BytesToHexString(binaryBucket, ""); 755 string binBucket = OpenMetaverse.Utils.BytesToHexString(binaryBucket, "");
738 756
@@ -745,7 +763,70 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
745 param["BinaryBucket"] = binBucket; 763 param["BinaryBucket"] = binBucket;
746 param["TimeStamp"] = ((uint)Util.UnixTimeSinceEpoch()).ToString(); 764 param["TimeStamp"] = ((uint)Util.UnixTimeSinceEpoch()).ToString();
747 765
748 XmlRpcCall(requestID, "groups.addGroupNotice", param); 766 XmlRpcCall(requestingAgentID, "groups.addGroupNotice", param);
767 }
768
769
770
771 #endregion
772
773 #region GroupSessionTracking
774
775 public void ResetAgentGroupChatSessions(UUID agentID)
776 {
777 foreach (List<UUID> agentList in m_groupsAgentsDroppedFromChatSession.Values)
778 {
779 agentList.Remove(agentID);
780 }
781 }
782
783 public bool hasAgentBeenInvitedToGroupChatSession(UUID agentID, UUID groupID)
784 {
785 // If we're tracking this group, and we can find them in the tracking, then they've been invited
786 return m_groupsAgentsInvitedToChatSession.ContainsKey(groupID)
787 && m_groupsAgentsInvitedToChatSession[groupID].Contains(agentID);
788 }
789
790 public bool hasAgentDroppedGroupChatSession(UUID agentID, UUID groupID)
791 {
792 // If we're tracking drops for this group,
793 // and we find them, well... then they've dropped
794 return m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID)
795 && m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID);
796 }
797
798 public void AgentDroppedFromGroupChatSession(UUID agentID, UUID groupID)
799 {
800 if (m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID))
801 {
802 // If not in dropped list, add
803 if (!m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID))
804 {
805 m_groupsAgentsDroppedFromChatSession[groupID].Add(agentID);
806 }
807 }
808 }
809
810 public void AgentInvitedToGroupChatSession(UUID agentID, UUID groupID)
811 {
812 // Add Session Status if it doesn't exist for this session
813 CreateGroupChatSessionTracking(groupID);
814
815 // If nessesary, remove from dropped list
816 if (m_groupsAgentsDroppedFromChatSession[groupID].Contains(agentID))
817 {
818 m_groupsAgentsDroppedFromChatSession[groupID].Remove(agentID);
819 }
820 }
821
822 private void CreateGroupChatSessionTracking(UUID groupID)
823 {
824 if (!m_groupsAgentsDroppedFromChatSession.ContainsKey(groupID))
825 {
826 m_groupsAgentsDroppedFromChatSession.Add(groupID, new List<UUID>());
827 m_groupsAgentsInvitedToChatSession.Add(groupID, new List<UUID>());
828 }
829
749 } 830 }
750 #endregion 831 #endregion
751 832
@@ -778,7 +859,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
778 859
779 private GroupRecord GroupProfileHashtableToGroupRecord(Hashtable groupProfile) 860 private GroupRecord GroupProfileHashtableToGroupRecord(Hashtable groupProfile)
780 { 861 {
781
782 GroupRecord group = new GroupRecord(); 862 GroupRecord group = new GroupRecord();
783 group.GroupID = UUID.Parse((string)groupProfile["GroupID"]); 863 group.GroupID = UUID.Parse((string)groupProfile["GroupID"]);
784 group.GroupName = groupProfile["Name"].ToString(); 864 group.GroupName = groupProfile["Name"].ToString();
@@ -797,6 +877,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
797 877
798 return group; 878 return group;
799 } 879 }
880
800 private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData) 881 private static GroupMembershipData HashTableToGroupMembershipData(Hashtable respData)
801 { 882 {
802 GroupMembershipData data = new GroupMembershipData(); 883 GroupMembershipData data = new GroupMembershipData();
@@ -829,6 +910,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
829 data.MembershipFee = int.Parse((string)respData["MembershipFee"]); 910 data.MembershipFee = int.Parse((string)respData["MembershipFee"]);
830 data.OpenEnrollment = ((string)respData["OpenEnrollment"] == "1"); 911 data.OpenEnrollment = ((string)respData["OpenEnrollment"] == "1");
831 data.ShowInList = ((string)respData["ShowInList"] == "1"); 912 data.ShowInList = ((string)respData["ShowInList"] == "1");
913
832 return data; 914 return data;
833 } 915 }
834 916
@@ -837,20 +919,27 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
837 /// <summary> 919 /// <summary>
838 /// Encapsulate the XmlRpc call to standardize security and error handling. 920 /// Encapsulate the XmlRpc call to standardize security and error handling.
839 /// </summary> 921 /// </summary>
840 private Hashtable XmlRpcCall(GroupRequestID requestID, string function, Hashtable param) 922 private Hashtable XmlRpcCall(UUID requestingAgentID, string function, Hashtable param)
841 { 923 {
842 if (requestID == null) 924 string UserService;
843 { 925 UUID SessionID;
844 requestID = new GroupRequestID(); 926 GetClientGroupRequestID(requestingAgentID, out UserService, out SessionID);
845 } 927 param.Add("RequestingAgentID", requestingAgentID.ToString());
846 param.Add("RequestingAgentID", requestID.AgentID.ToString()); 928 param.Add("RequestingAgentUserService", UserService);
847 param.Add("RequestingAgentUserService", requestID.UserServiceURL); 929 param.Add("RequestingSessionID", SessionID.ToString());
848 param.Add("RequestingSessionID", requestID.SessionID.ToString());
849 930
850 931
851 param.Add("ReadKey", m_groupReadKey); 932 param.Add("ReadKey", m_groupReadKey);
852 param.Add("WriteKey", m_groupWriteKey); 933 param.Add("WriteKey", m_groupWriteKey);
853 934
935 if (m_debugEnabled)
936 {
937 m_log.Debug("[XMLRPCGROUPDATA] XmlRpcCall Params:");
938 foreach (string key in param.Keys)
939 {
940 m_log.DebugFormat("[XMLRPCGROUPDATA] {0} : {1}", key, param[key]);
941 }
942 }
854 943
855 IList parameters = new ArrayList(); 944 IList parameters = new ArrayList();
856 parameters.Add(param); 945 parameters.Add(param);
@@ -862,7 +951,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
862 951
863 try 952 try
864 { 953 {
865 resp = req.Send(m_serviceURL, 10000); 954 resp = req.Send(m_groupsServerURI, 10000);
866 } 955 }
867 catch (Exception e) 956 catch (Exception e)
868 { 957 {
@@ -871,10 +960,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
871 m_log.ErrorFormat("[XMLRPCGROUPDATA]: An error has occured while attempting to access the XmlRpcGroups server method: {0}", function); 960 m_log.ErrorFormat("[XMLRPCGROUPDATA]: An error has occured while attempting to access the XmlRpcGroups server method: {0}", function);
872 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0} ", e.ToString()); 961 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0} ", e.ToString());
873 962
874 foreach (string ResponseLine in req.RequestResponse.Split(new string[] { Environment.NewLine },StringSplitOptions.None)) 963 if ((req != null) && (req.RequestResponse != null))
964 {
965 foreach (string ResponseLine in req.RequestResponse.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
875 { 966 {
876 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0} ", ResponseLine); 967 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0} ", ResponseLine);
877 } 968 }
969 }
878 970
879 foreach (string key in param.Keys) 971 foreach (string key in param.Keys)
880 { 972 {
@@ -886,12 +978,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
886 return respData; 978 return respData;
887 } 979 }
888 980
981
889 if (resp.Value is Hashtable) 982 if (resp.Value is Hashtable)
890 { 983 {
891 Hashtable respData = (Hashtable)resp.Value; 984 Hashtable respData = (Hashtable)resp.Value;
892 if (respData.Contains("error") && !respData.Contains("succeed")) 985 if (respData.Contains("error") && !respData.Contains("succeed"))
893 { 986 {
894 LogRespDataToConsoleError(respData); 987 LogRespDataToConsoleError(function, respData);
895 } 988 }
896 989
897 return respData; 990 return respData;
@@ -919,32 +1012,75 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
919 return error; 1012 return error;
920 } 1013 }
921 1014
922 private void LogRespDataToConsoleError(Hashtable respData) 1015 private void LogRespDataToConsoleError(string function, Hashtable respData)
923 { 1016 {
1017 m_log.ErrorFormat("[XMLRPCGROUPDATA]: Error data from XmlRpcGroups server method: {0}", function);
924 m_log.Error("[XMLRPCGROUPDATA]: Error:"); 1018 m_log.Error("[XMLRPCGROUPDATA]: Error:");
925 1019
926 foreach (string key in respData.Keys) 1020 foreach (string key in respData.Keys)
927 { 1021 {
928 m_log.ErrorFormat("[XMLRPCGROUPDATA]: Key: {0}", key); 1022 m_log.ErrorFormat("[XMLRPCGROUPDATA]: Key: {0}", key);
929 1023
930 string[] lines = respData[key].ToString().Split(new char[] { '\n' }); 1024 if ((respData != null) && (respData.ContainsKey(key)) && (respData[key]!=null))
931 foreach (string line in lines)
932 { 1025 {
933 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0}", line); 1026 string[] lines = respData[key].ToString().Split(new char[] { '\n' });
1027 foreach (string line in lines)
1028 {
1029 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0}", line);
1030 }
1031 }
1032 else
1033 {
1034 m_log.ErrorFormat("[XMLRPCGROUPDATA]: {0} : Empty/NULL", key);
934 } 1035 }
935 1036
936 } 1037 }
937 } 1038 }
938 1039
1040
1041 /// <summary>
1042 /// Group Request Tokens are an attempt to allow the groups service to authenticate
1043 /// requests.
1044 /// TODO: This broke after the big grid refactor, either find a better way, or discard this
1045 /// </summary>
1046 /// <param name="client"></param>
1047 /// <returns></returns>
1048 private void GetClientGroupRequestID(UUID AgentID, out string UserServiceURL, out UUID SessionID)
1049 {
1050 // Default to local grid user service
1051 UserServiceURL = m_commManager.NetworkServersInfo.UserURL; ;
939 1052
940 } 1053 // if AgentID == UUID, there will be no SessionID. This will be true when
1054 // the region is requesting information for region use (object permissions for example)
1055 SessionID = UUID.Zero;
941 1056
942 public class GroupNoticeInfo 1057 // Attempt to get User Profile, for SessionID
943 { 1058 UserProfileData userProfile = m_userService.GetUserProfile(AgentID);
944 public GroupNoticeData noticeData = new GroupNoticeData(); 1059
945 public UUID GroupID = UUID.Zero; 1060 if ((userProfile != null) && (userProfile is ForeignUserProfileData))
946 public string Message = string.Empty; 1061 {
947 public byte[] BinaryBucket = new byte[0]; 1062 // They aren't from around here
1063 ForeignUserProfileData fupd = (ForeignUserProfileData)userProfile;
1064 UserServiceURL = fupd.UserServerURI;
1065 SessionID = fupd.CurrentAgent.SessionID;
1066
1067 }
1068 else if (userProfile != null)
1069 {
1070 // Local, just use the local SessionID
1071 SessionID = userProfile.CurrentAgent.SessionID;
1072 }
1073 else if (AgentID != UUID.Zero)
1074 {
1075 // This should be impossible. If I've been passed a reference to a client
1076 // that client should be registered with the UserService. So something
1077 // is horribly wrong somewhere.
1078
1079 // m_log.WarnFormat("[XMLRPCGROUPDATA]: Could not find a UserServiceURL for {0}", AgentID);
1080
1081 }
1082 }
1083
948 } 1084 }
949} 1085}
950 1086
diff --git a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
index c653e98..672109b 100644
--- a/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/RegionReadyModule/RegionReadyModule.cs
@@ -146,6 +146,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
146 c.Position = new Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 30); 146 c.Position = new Vector3(((int)Constants.RegionSize * 0.5f), ((int)Constants.RegionSize * 0.5f), 30);
147 c.Sender = null; 147 c.Sender = null;
148 c.SenderUUID = UUID.Zero; 148 c.SenderUUID = UUID.Zero;
149 c.Scene = m_scene;
149 150
150 m_log.InfoFormat("[RegionReady]: Region \"{0}\" is ready: \"{1}\" on channel {2}", 151 m_log.InfoFormat("[RegionReady]: Region \"{0}\" is ready: \"{1}\" on channel {2}",
151 m_scene.RegionInfo.RegionName, c.Message, m_channelNotify); 152 m_scene.RegionInfo.RegionName, c.Message, m_channelNotify);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 3b2c9b1..e4e087f 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -9784,90 +9784,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
9784 9784
9785 Notecard nc = new Notecard(); 9785 Notecard nc = new Notecard();
9786 nc.lastRef = DateTime.Now; 9786 nc.lastRef = DateTime.Now;
9787 nc.text = ParseText(text.Replace("\r", "").Split('\n')); 9787 nc.text = SLUtil.ParseNotecardToList(text).ToArray();
9788 m_Notecards[assetID] = nc; 9788 m_Notecards[assetID] = nc;
9789 } 9789 }
9790 } 9790 }
9791 9791
9792 protected static string[] ParseText(string[] input)
9793 {
9794 int idx = 0;
9795 int level = 0;
9796 List<string> output = new List<string>();
9797 string[] words;
9798
9799 while (idx < input.Length)
9800 {
9801 if (input[idx] == "{")
9802 {
9803 level++;
9804 idx++;
9805 continue;
9806 }
9807
9808 if (input[idx]== "}")
9809 {
9810 level--;
9811 idx++;
9812 continue;
9813 }
9814
9815 switch (level)
9816 {
9817 case 0:
9818 words = input[idx].Split(' '); // Linden text ver
9819 // Notecards are created *really* empty. Treat that as "no text" (just like after saving an empty notecard)
9820 if (words.Length < 3)
9821 return new String[0];
9822
9823 int version = int.Parse(words[3]);
9824 if (version != 2)
9825 return new String[0];
9826 break;
9827 case 1:
9828 words = input[idx].Split(' ');
9829 if (words[0] == "LLEmbeddedItems")
9830 break;
9831 if (words[0] == "Text")
9832 {
9833 int len = int.Parse(words[2]);
9834 idx++;
9835
9836 int count = -1;
9837
9838 while (count < len)
9839 {
9840 // int l = input[idx].Length;
9841 string ln = input[idx];
9842
9843 int need = len-count-1;
9844 if (ln.Length > need)
9845 ln = ln.Substring(0, need);
9846
9847 output.Add(ln);
9848 count += ln.Length + 1;
9849 idx++;
9850 }
9851
9852 return output.ToArray();
9853 }
9854 break;
9855 case 2:
9856 words = input[idx].Split(' '); // count
9857 if (words[0] == "count")
9858 {
9859 int c = int.Parse(words[1]);
9860 if (c > 0)
9861 return new String[0];
9862 break;
9863 }
9864 break;
9865 }
9866 idx++;
9867 }
9868 return output.ToArray();
9869 }
9870
9871 public static bool IsCached(UUID assetID) 9792 public static bool IsCached(UUID assetID)
9872 { 9793 {
9873 lock (m_Notecards) 9794 lock (m_Notecards)
@@ -9923,4 +9844,4 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
9923 } 9844 }
9924 } 9845 }
9925 } 9846 }
9926} 9847} \ No newline at end of file
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
index d8c0ba5..959164b 100644
--- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/Compiler.cs
@@ -32,7 +32,7 @@ using System.Globalization;
32using System.Reflection; 32using System.Reflection;
33using System.IO; 33using System.IO;
34using Microsoft.CSharp; 34using Microsoft.CSharp;
35using Microsoft.JScript; 35//using Microsoft.JScript;
36using Microsoft.VisualBasic; 36using Microsoft.VisualBasic;
37using log4net; 37using log4net;
38using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
@@ -82,7 +82,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
82 82
83 private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider(); 83 private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider();
84 private static VBCodeProvider VBcodeProvider = new VBCodeProvider(); 84 private static VBCodeProvider VBcodeProvider = new VBCodeProvider();
85 private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider(); 85// private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider();
86 private static CSharpCodeProvider YPcodeProvider = new CSharpCodeProvider(); // YP is translated into CSharp 86 private static CSharpCodeProvider YPcodeProvider = new CSharpCodeProvider(); // YP is translated into CSharp
87 private static YP2CSConverter YP_Converter = new YP2CSConverter(); 87 private static YP2CSConverter YP_Converter = new YP2CSConverter();
88 88
@@ -395,9 +395,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
395 case enumCompileType.vb: 395 case enumCompileType.vb:
396 compileScript = CreateVBCompilerScript(compileScript); 396 compileScript = CreateVBCompilerScript(compileScript);
397 break; 397 break;
398 case enumCompileType.js: 398// case enumCompileType.js:
399 compileScript = CreateJSCompilerScript(compileScript); 399// compileScript = CreateJSCompilerScript(compileScript);
400 break; 400// break;
401 case enumCompileType.yp: 401 case enumCompileType.yp:
402 compileScript = CreateYPCompilerScript(compileScript); 402 compileScript = CreateYPCompilerScript(compileScript);
403 break; 403 break;
@@ -420,16 +420,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
420 } 420 }
421 } 421 }
422 422
423 private static string CreateJSCompilerScript(string compileScript) 423// private static string CreateJSCompilerScript(string compileScript)
424 { 424// {
425 compileScript = String.Empty + 425// compileScript = String.Empty +
426 "import OpenSim.Region.ScriptEngine.Shared; import System.Collections.Generic;\r\n" + 426// "import OpenSim.Region.ScriptEngine.Shared; import System.Collections.Generic;\r\n" +
427 "package SecondLife {\r\n" + 427// "package SecondLife {\r\n" +
428 "class Script extends OpenSim.Region.ScriptEngine.Shared.ScriptBase.ScriptBaseClass { \r\n" + 428// "class Script extends OpenSim.Region.ScriptEngine.Shared.ScriptBase.ScriptBaseClass { \r\n" +
429 compileScript + 429// compileScript +
430 "} }\r\n"; 430// "} }\r\n";
431 return compileScript; 431// return compileScript;
432 } 432// }
433 433
434 private static string CreateCSCompilerScript(string compileScript) 434 private static string CreateCSCompilerScript(string compileScript)
435 { 435 {
@@ -580,10 +580,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
580 } 580 }
581 } while (!complete); 581 } while (!complete);
582 break; 582 break;
583 case enumCompileType.js: 583// case enumCompileType.js:
584 results = JScodeProvider.CompileAssemblyFromSource( 584// results = JScodeProvider.CompileAssemblyFromSource(
585 parameters, Script); 585// parameters, Script);
586 break; 586// break;
587 case enumCompileType.yp: 587 case enumCompileType.yp:
588 results = YPcodeProvider.CompileAssemblyFromSource( 588 results = YPcodeProvider.CompileAssemblyFromSource(
589 parameters, Script); 589 parameters, Script);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index d30d2dc..18351ad 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -541,7 +541,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
541 m_CurrentResult = null; 541 m_CurrentResult = null;
542 } 542 }
543 543
544 return true; 544 return false;
545 } 545 }
546 546
547 public void SetState(string state) 547 public void SetState(string state)
@@ -991,7 +991,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
991 public string GetXMLState() 991 public string GetXMLState()
992 { 992 {
993 bool run = Running; 993 bool run = Running;
994 Stop(100); 994 bool stopped = Stop(100);
995 Running = run; 995 Running = run;
996 996
997 // We should not be doing this, but since we are about to 997 // We should not be doing this, but since we are about to
@@ -1002,6 +1002,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
1002 1002
1003 // Force an update of the in-memory plugin data 1003 // Force an update of the in-memory plugin data
1004 // 1004 //
1005 if (!stopped)
1006 return String.Empty;
1007
1005 PluginData = AsyncCommandManager.GetSerializationData(m_Engine, m_ItemID); 1008 PluginData = AsyncCommandManager.GetSerializationData(m_Engine, m_ItemID);
1006 1009
1007 return ScriptSerializer.Serialize(this); 1010 return ScriptSerializer.Serialize(this);
diff --git a/OpenSim/Server/Base/HttpServerBase.cs b/OpenSim/Server/Base/HttpServerBase.cs
index 77184a4..9e4593e 100644
--- a/OpenSim/Server/Base/HttpServerBase.cs
+++ b/OpenSim/Server/Base/HttpServerBase.cs
@@ -71,6 +71,8 @@ namespace OpenSim.Server.Base
71 return m_Servers[port]; 71 return m_Servers[port];
72 72
73 m_Servers[port] = new BaseHttpServer(port); 73 m_Servers[port] = new BaseHttpServer(port);
74
75 m_Log.InfoFormat("[SERVER]: Starting new HTTP server on port {0}", port);
74 m_Servers[port].Start(); 76 m_Servers[port].Start();
75 77
76 return m_Servers[port]; 78 return m_Servers[port];
@@ -109,6 +111,7 @@ namespace OpenSim.Server.Base
109 111
110 protected override void Initialise() 112 protected override void Initialise()
111 { 113 {
114 m_Log.InfoFormat("[SERVER]: Starting HTTP server on port {0}", m_HttpServer.Port);
112 m_HttpServer.Start(); 115 m_HttpServer.Start();
113 116
114 if (MainConsole.Instance is RemoteConsole) 117 if (MainConsole.Instance is RemoteConsole)
diff --git a/bin/CSJ2K.dll b/bin/CSJ2K.dll
index 31e0d59..238291f 100644
--- a/bin/CSJ2K.dll
+++ b/bin/CSJ2K.dll
Binary files differ
diff --git a/bin/Newtonsoft.Json.XML b/bin/Newtonsoft.Json.XML
index b84e336..5af3593 100644
--- a/bin/Newtonsoft.Json.XML
+++ b/bin/Newtonsoft.Json.XML
@@ -1,990 +1,5827 @@
1<?xml version="1.0"?> 1<?xml version="1.0"?>
2<doc> 2<doc>
3 <assembly> 3 <assembly>
4 <name>Newtonsoft.Json</name> 4 <name>Newtonsoft.Json.Net20</name>
5 </assembly> 5 </assembly>
6 <members> 6 <members>
7 <member name="M:Newtonsoft.Json.Utilities.StringUtils.ContainsWhiteSpace(System.String)"> 7 <member name="T:Newtonsoft.Json.Bson.BsonReader">
8 <summary> 8 <summary>
9 Determines whether the string contains white space. 9 Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
10 </summary> 10 </summary>
11 <param name="s">The string to test for white space.</param> 11 </member>
12 <returns> 12 <member name="T:Newtonsoft.Json.JsonReader">
13 <c>true</c> if the string contains white space; otherwise, <c>false</c>. 13 <summary>
14 </returns> 14 Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
15 </member> 15 </summary>
16 <member name="M:Newtonsoft.Json.Utilities.StringUtils.IsWhiteSpace(System.String)"> 16 </member>
17 <summary> 17 <member name="M:Newtonsoft.Json.JsonReader.#ctor">
18 Determines whether the string is all white space. Empty string will return false. 18 <summary>
19 </summary> 19 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class with the specified <see cref="T:System.IO.TextReader"/>.
20 <param name="s">The string to test whether it is all white space.</param> 20 </summary>
21 <returns> 21 </member>
22 <c>true</c> if the string is all white space; otherwise, <c>false</c>. 22 <member name="M:Newtonsoft.Json.JsonReader.Read">
23 </returns> 23 <summary>
24 </member> 24 Reads the next JSON token from the stream.
25 <member name="M:Newtonsoft.Json.Utilities.StringUtils.EnsureEndsWith(System.String,System.String)"> 25 </summary>
26 <summary> 26 <returns>true if the next token was read successfully; false if there are no more tokens to read.</returns>
27 Ensures the target string ends with the specified string. 27 </member>
28 </summary> 28 <member name="M:Newtonsoft.Json.JsonReader.ReadAsBytes">
29 <param name="target">The target.</param> 29 <summary>
30 <param name="value">The value.</param> 30 Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
31 <returns>The target string with the value string at the end.</returns> 31 </summary>
32 </member> 32 <returns>A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.</returns>
33 <member name="M:Newtonsoft.Json.Utilities.StringUtils.IsNullOrEmpty(System.Data.SqlTypes.SqlString)"> 33 </member>
34 <summary> 34 <member name="M:Newtonsoft.Json.JsonReader.Skip">
35 Determines whether the SqlString is null or empty. 35 <summary>
36 </summary> 36 Skips the children of the current token.
37 <param name="s">The string.</param> 37 </summary>
38 <returns> 38 </member>
39 <c>true</c> if the SqlString is null or empty; otherwise, <c>false</c>. 39 <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken)">
40 </returns> 40 <summary>
41 </member> 41 Sets the current token.
42 <member name="M:Newtonsoft.Json.Utilities.StringUtils.IfNotNullOrEmpty(System.String,System.Action{System.String})"> 42 </summary>
43 <summary> 43 <param name="newToken">The new token.</param>
44 Perform an action if the string is not null or empty. 44 </member>
45 </summary> 45 <member name="M:Newtonsoft.Json.JsonReader.SetToken(Newtonsoft.Json.JsonToken,System.Object)">
46 <param name="value">The value.</param> 46 <summary>
47 <param name="action">The action to perform.</param> 47 Sets the current token and value.
48 </member> 48 </summary>
49 <member name="M:Newtonsoft.Json.Utilities.StringUtils.Indent(System.String,System.Int32)"> 49 <param name="newToken">The new token.</param>
50 <summary> 50 <param name="value">The value.</param>
51 Indents the specified string. 51 </member>
52 </summary> 52 <member name="M:Newtonsoft.Json.JsonReader.SetStateBasedOnCurrent">
53 <param name="s">The string to indent.</param> 53 <summary>
54 <param name="indentation">The number of characters to indent by.</param> 54 Sets the state based on current token type.
55 <returns></returns> 55 </summary>
56 </member> 56 </member>
57 <member name="M:Newtonsoft.Json.Utilities.StringUtils.Indent(System.String,System.Int32,System.Char)"> 57 <member name="M:Newtonsoft.Json.JsonReader.System#IDisposable#Dispose">
58 <summary> 58 <summary>
59 Indents the specified string. 59 Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
60 </summary> 60 </summary>
61 <param name="s">The string to indent.</param> 61 </member>
62 <param name="indentation">The number of characters to indent by.</param> 62 <member name="M:Newtonsoft.Json.JsonReader.Dispose(System.Boolean)">
63 <param name="indentChar">The indent character.</param> 63 <summary>
64 <returns></returns> 64 Releases unmanaged and - optionally - managed resources
65 </member> 65 </summary>
66 <member name="M:Newtonsoft.Json.Utilities.StringUtils.NumberLines(System.String)"> 66 <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
67 <summary> 67 </member>
68 Numbers the lines. 68 <member name="M:Newtonsoft.Json.JsonReader.Close">
69 </summary> 69 <summary>
70 <param name="s">The string to number.</param> 70 Changes the <see cref="T:Newtonsoft.Json.JsonReader.State"/> to Closed.
71 <returns></returns> 71 </summary>
72 </member> 72 </member>
73 <member name="M:Newtonsoft.Json.Utilities.StringUtils.NullEmptyString(System.String)"> 73 <member name="P:Newtonsoft.Json.JsonReader.CurrentState">
74 <summary> 74 <summary>
75 Nulls an empty string. 75 Gets the current reader state.
76 </summary> 76 </summary>
77 <param name="s">The string.</param> 77 <value>The current reader state.</value>
78 <returns>Null if the string was null, otherwise the string unchanged.</returns> 78 </member>
79 </member> 79 <member name="P:Newtonsoft.Json.JsonReader.QuoteChar">
80 <member name="T:Newtonsoft.Json.JsonReaderException"> 80 <summary>
81 <summary> 81 Gets the quotation mark character used to enclose the value of a string.
82 The exception thrown when an error occurs while reading Json text. 82 </summary>
83 </summary> 83 </member>
84 </member> 84 <member name="P:Newtonsoft.Json.JsonReader.TokenType">
85 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor"> 85 <summary>
86 <summary> 86 Gets the type of the current Json token.
87 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class. 87 </summary>
88 </summary> 88 </member>
89 </member> 89 <member name="P:Newtonsoft.Json.JsonReader.Value">
90 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String)"> 90 <summary>
91 <summary> 91 Gets the text value of the current Json token.
92 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class 92 </summary>
93 with a specified error message. 93 </member>
94 </summary> 94 <member name="P:Newtonsoft.Json.JsonReader.ValueType">
95 <param name="message">The error message that explains the reason for the exception.</param> 95 <summary>
96 </member> 96 Gets The Common Language Runtime (CLR) type for the current Json token.
97 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String,System.Exception)"> 97 </summary>
98 <summary> 98 </member>
99 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class 99 <member name="P:Newtonsoft.Json.JsonReader.Depth">
100 with a specified error message and a reference to the inner exception that is the cause of this exception. 100 <summary>
101 </summary> 101 Gets the depth of the current token in the JSON document.
102 <param name="message">The error message that explains the reason for the exception.</param> 102 </summary>
103 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> 103 <value>The depth of the current token in the JSON document.</value>
104 </member> 104 </member>
105 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetListItemType(System.Type)"> 105 <member name="T:Newtonsoft.Json.JsonReader.State">
106 <summary> 106 <summary>
107 Gets the type of the typed list's items. 107 Specifies the state of the reader.
108 </summary> 108 </summary>
109 <param name="type">The type.</param> 109 </member>
110 <returns>The type of the typed list's items.</returns> 110 <member name="F:Newtonsoft.Json.JsonReader.State.Start">
111 </member> 111 <summary>
112 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.ItemsUnitializedValue``1(System.Collections.Generic.IList{``0})"> 112 The Read method has not been called.
113 <summary> 113 </summary>
114 Tests whether the list's items are their unitialized value. 114 </member>
115 </summary> 115 <member name="F:Newtonsoft.Json.JsonReader.State.Complete">
116 <param name="list">The list.</param> 116 <summary>
117 <returns>Whether the list's items are their unitialized value</returns> 117 The end of the file has been reached successfully.
118 </member> 118 </summary>
119 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberUnderlyingType(System.Reflection.MemberInfo)"> 119 </member>
120 <summary> 120 <member name="F:Newtonsoft.Json.JsonReader.State.Property">
121 Gets the member's underlying type. 121 <summary>
122 </summary> 122 Reader is at a property.
123 <param name="member">The member.</param> 123 </summary>
124 <returns>The underlying type of the member.</returns> 124 </member>
125 </member> 125 <member name="F:Newtonsoft.Json.JsonReader.State.ObjectStart">
126 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.MemberInfo)"> 126 <summary>
127 <summary> 127 Reader is at the start of an object.
128 Determines whether the member is an indexed property. 128 </summary>
129 </summary> 129 </member>
130 <param name="member">The member.</param> 130 <member name="F:Newtonsoft.Json.JsonReader.State.Object">
131 <returns> 131 <summary>
132 <c>true</c> if the member is an indexed property; otherwise, <c>false</c>. 132 Reader is in an object.
133 </returns> 133 </summary>
134 </member> 134 </member>
135 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.PropertyInfo)"> 135 <member name="F:Newtonsoft.Json.JsonReader.State.ArrayStart">
136 <summary> 136 <summary>
137 Determines whether the property is an indexed property. 137 Reader is at the start of an array.
138 </summary> 138 </summary>
139 <param name="property">The property.</param> 139 </member>
140 <returns> 140 <member name="F:Newtonsoft.Json.JsonReader.State.Array">
141 <c>true</c> if the property is an indexed property; otherwise, <c>false</c>. 141 <summary>
142 </returns> 142 Reader is in an array.
143 </member> 143 </summary>
144 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberValue(System.Reflection.MemberInfo,System.Object)"> 144 </member>
145 <summary> 145 <member name="F:Newtonsoft.Json.JsonReader.State.Closed">
146 Gets the member's value on the object. 146 <summary>
147 </summary> 147 The Close method has been called.
148 <param name="member">The member.</param> 148 </summary>
149 <param name="target">The target object.</param> 149 </member>
150 <returns>The member's value on the object.</returns> 150 <member name="F:Newtonsoft.Json.JsonReader.State.PostValue">
151 </member> 151 <summary>
152 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)"> 152 Reader has just read a value.
153 <summary> 153 </summary>
154 Sets the member's value on the target object. 154 </member>
155 </summary> 155 <member name="F:Newtonsoft.Json.JsonReader.State.ConstructorStart">
156 <param name="member">The member.</param> 156 <summary>
157 <param name="target">The target.</param> 157 Reader is at the start of a constructor.
158 <param name="value">The value.</param> 158 </summary>
159 </member> 159 </member>
160 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanReadMemberValue(System.Reflection.MemberInfo)"> 160 <member name="F:Newtonsoft.Json.JsonReader.State.Constructor">
161 <summary> 161 <summary>
162 Determines whether the specified MemberInfo can be read. 162 Reader in a constructor.
163 </summary> 163 </summary>
164 <param name="member">The MemberInfo to determine whether can be read.</param> 164 </member>
165 <returns> 165 <member name="F:Newtonsoft.Json.JsonReader.State.Error">
166 <c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>. 166 <summary>
167 </returns> 167 An error occurred that prevents the read operation from continuing.
168 </member> 168 </summary>
169 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanSetMemberValue(System.Reflection.MemberInfo)"> 169 </member>
170 <summary> 170 <member name="F:Newtonsoft.Json.JsonReader.State.Finished">
171 Determines whether the specified MemberInfo can be set. 171 <summary>
172 </summary> 172 The end of the file has been reached successfully.
173 <param name="member">The MemberInfo to determine whether can be set.</param> 173 </summary>
174 <returns> 174 </member>
175 <c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>. 175 <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream)">
176 </returns> 176 <summary>
177 </member> 177 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
178 <member name="T:Newtonsoft.Json.ReferenceLoopHandling"> 178 </summary>
179 <summary> 179 <param name="stream">The stream.</param>
180 Specifies reference loop handling options for the <see cref="T:Newtonsoft.Json.JsonWriter"/>. 180 </member>
181 </summary> 181 <member name="M:Newtonsoft.Json.Bson.BsonReader.#ctor(System.IO.Stream,System.Boolean,System.DateTimeKind)">
182 </member> 182 <summary>
183 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Error"> 183 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonReader"/> class.
184 <summary> 184 </summary>
185 Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a loop is encountered. 185 <param name="stream">The stream.</param>
186 </summary> 186 <param name="readRootValueAsArray">if set to <c>true</c> the root object will be read as a JSON array.</param>
187 </member> 187 <param name="dateTimeKindHandling">The <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.</param>
188 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Ignore"> 188 </member>
189 <summary> 189 <member name="M:Newtonsoft.Json.Bson.BsonReader.ReadAsBytes">
190 Ignore loop references and do not serialize. 190 <summary>
191 </summary> 191 Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
192 </member> 192 </summary>
193 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Serialize"> 193 <returns>
194 <summary> 194 A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
195 Serialize loop references. 195 </returns>
196 </summary> 196 </member>
197 </member> 197 <member name="M:Newtonsoft.Json.Bson.BsonReader.Read">
198 <member name="T:Newtonsoft.Json.JsonSerializer"> 198 <summary>
199 <summary> 199 Reads the next JSON token from the stream.
200 Serializes and deserializes objects into and from the Json format. 200 </summary>
201 The <see cref="T:Newtonsoft.Json.JsonSerializer"/> enables you to control how objects are encoded into Json. 201 <returns>
202 </summary> 202 true if the next token was read successfully; false if there are no more tokens to read.
203 </member> 203 </returns>
204 <member name="M:Newtonsoft.Json.JsonSerializer.#ctor"> 204 </member>
205 <summary> 205 <member name="P:Newtonsoft.Json.Bson.BsonReader.ReadRootValueAsArray">
206 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializer"/> class. 206 <summary>
207 </summary> 207 Gets or sets a value indicating whether the root object will be read as a JSON array.
208 </member> 208 </summary>
209 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader)"> 209 <value>
210 <summary> 210 <c>true</c> if the root object will be read as a JSON array; otherwise, <c>false</c>.
211 Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>. 211 </value>
212 </summary> 212 </member>
213 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the Json structure to deserialize.</param> 213 <member name="P:Newtonsoft.Json.Bson.BsonReader.DateTimeKindHandling">
214 <returns>The <see cref="T:System.Object"/> being deserialized.</returns> 214 <summary>
215 </member> 215 Gets or sets the <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.
216 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader,System.Type)"> 216 </summary>
217 <summary> 217 <value>The <see cref="T:System.DateTimeKind"/> used when reading <see cref="T:System.DateTime"/> values from BSON.</value>
218 Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/> 218 </member>
219 into an instance of the specified type. 219 <member name="T:Newtonsoft.Json.Bson.BsonWriter">
220 </summary> 220 <summary>
221 <param name="reader">The type of object to create.</param> 221 Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
222 <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param> 222 </summary>
223 <returns>The instance of <paramref name="objectType"/> being deserialized.</returns> 223 </member>
224 </member> 224 <member name="T:Newtonsoft.Json.Linq.JTokenWriter">
225 <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object)"> 225 <summary>
226 <summary> 226 Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
227 Serializes the specified <see cref="T:System.Object"/> and writes the Json structure 227 </summary>
228 to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>. 228 </member>
229 </summary> 229 <member name="T:Newtonsoft.Json.JsonWriter">
230 <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param> 230 <summary>
231 <param name="value">The <see cref="T:System.Object"/> to serialize.</param> 231 Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
232 </member> 232 </summary>
233 <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object)"> 233 </member>
234 <summary> 234 <member name="M:Newtonsoft.Json.JsonWriter.#ctor">
235 Serializes the specified <see cref="T:System.Object"/> and writes the Json structure 235 <summary>
236 to a <c>Stream</c> using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>. 236 Creates an instance of the <c>JsonWriter</c> class.
237 </summary> 237 </summary>
238 <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param> 238 </member>
239 <param name="value">The <see cref="T:System.Object"/> to serialize.</param> 239 <member name="M:Newtonsoft.Json.JsonWriter.Flush">
240 </member> 240 <summary>
241 <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceLoopHandling"> 241 Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
242 <summary> 242 </summary>
243 Get or set how reference loops (e.g. a class referencing itself) is handled. 243 </member>
244 </summary> 244 <member name="M:Newtonsoft.Json.JsonWriter.Close">
245 </member> 245 <summary>
246 <member name="T:Newtonsoft.Json.JavaScriptArray"> 246 Closes this stream and the underlying stream.
247 <summary> 247 </summary>
248 Represents a JavaScript array. 248 </member>
249 </summary> 249 <member name="M:Newtonsoft.Json.JsonWriter.WriteStartObject">
250 </member> 250 <summary>
251 <member name="M:Newtonsoft.Json.JavaScriptArray.#ctor"> 251 Writes the beginning of a Json object.
252 <summary> 252 </summary>
253 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JavaScriptObject"/> class. 253 </member>
254 </summary> 254 <member name="M:Newtonsoft.Json.JsonWriter.WriteEndObject">
255 </member> 255 <summary>
256 <member name="M:Newtonsoft.Json.JavaScriptArray.#ctor(System.Collections.Generic.IEnumerable{System.Object})"> 256 Writes the end of a Json object.
257 <summary> 257 </summary>
258 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JavaScriptArray"/> class that 258 </member>
259 contains elements copied from the specified collection. 259 <member name="M:Newtonsoft.Json.JsonWriter.WriteStartArray">
260 </summary> 260 <summary>
261 <param name="collection">The collection whose elements are copied to the new array.</param> 261 Writes the beginning of a Json array.
262 </member> 262 </summary>
263 <member name="M:Newtonsoft.Json.JavaScriptArray.#ctor(System.Int32)"> 263 </member>
264 <summary> 264 <member name="M:Newtonsoft.Json.JsonWriter.WriteEndArray">
265 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JavaScriptArray"/> class that 265 <summary>
266 is empty and has the specified initial capacity. 266 Writes the end of an array.
267 </summary> 267 </summary>
268 <param name="capacity">The number of elements that the new array can initially store.</param> 268 </member>
269 </member> 269 <member name="M:Newtonsoft.Json.JsonWriter.WriteStartConstructor(System.String)">
270 <member name="T:Newtonsoft.Json.JavaScriptConvert"> 270 <summary>
271 <summary> 271 Writes the start of a constructor with the given name.
272 Provides methods for converting between common language runtime types and JavaScript types. 272 </summary>
273 </summary> 273 <param name="name">The name of the constructor.</param>
274 </member> 274 </member>
275 <member name="F:Newtonsoft.Json.JavaScriptConvert.True"> 275 <member name="M:Newtonsoft.Json.JsonWriter.WriteEndConstructor">
276 <summary> 276 <summary>
277 Represents JavaScript's boolean value true as a string. This field is read-only. 277 Writes the end constructor.
278 </summary> 278 </summary>
279 </member> 279 </member>
280 <member name="F:Newtonsoft.Json.JavaScriptConvert.False"> 280 <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String)">
281 <summary> 281 <summary>
282 Represents JavaScript's boolean value false as a string. This field is read-only. 282 Writes the property name of a name/value pair on a Json object.
283 </summary> 283 </summary>
284 </member> 284 <param name="name">The name of the property.</param>
285 <member name="F:Newtonsoft.Json.JavaScriptConvert.Null"> 285 </member>
286 <summary> 286 <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd">
287 Represents JavaScript's null as a string. This field is read-only. 287 <summary>
288 </summary> 288 Writes the end of the current Json object or array.
289 </member> 289 </summary>
290 <member name="F:Newtonsoft.Json.JavaScriptConvert.Undefined"> 290 </member>
291 <summary> 291 <member name="M:Newtonsoft.Json.JsonWriter.WriteToken(Newtonsoft.Json.JsonReader)">
292 Represents JavaScript's undefined as a string. This field is read-only. 292 <summary>
293 </summary> 293 Writes the current <see cref="T:Newtonsoft.Json.JsonReader"/> token.
294 </member> 294 </summary>
295 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.DateTime)"> 295 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read the token from.</param>
296 <summary> 296 </member>
297 Converts the <see cref="T:System.DateTime"/> to it's JavaScript string representation. 297 <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
298 </summary> 298 <summary>
299 <param name="value">The value to convert.</param> 299 Writes the specified end token.
300 <returns>A Json string representation of the <see cref="T:System.DateTime"/>.</returns> 300 </summary>
301 </member> 301 <param name="token">The end token to write.</param>
302 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Boolean)"> 302 </member>
303 <summary> 303 <member name="M:Newtonsoft.Json.JsonWriter.WriteIndent">
304 Converts the <see cref="T:System.Boolean"/> to it's JavaScript string representation. 304 <summary>
305 </summary> 305 Writes indent characters.
306 <param name="value">The value to convert.</param> 306 </summary>
307 <returns>A Json string representation of the <see cref="T:System.Boolean"/>.</returns> 307 </member>
308 </member> 308 <member name="M:Newtonsoft.Json.JsonWriter.WriteValueDelimiter">
309 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Char)"> 309 <summary>
310 <summary> 310 Writes the JSON value delimiter.
311 Converts the <see cref="T:System.Char"/> to it's JavaScript string representation. 311 </summary>
312 </summary> 312 </member>
313 <param name="value">The value to convert.</param> 313 <member name="M:Newtonsoft.Json.JsonWriter.WriteIndentSpace">
314 <returns>A Json string representation of the <see cref="T:System.Char"/>.</returns> 314 <summary>
315 </member> 315 Writes an indent space.
316 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Enum)"> 316 </summary>
317 <summary> 317 </member>
318 Converts the <see cref="T:System.Enum"/> to it's JavaScript string representation. 318 <member name="M:Newtonsoft.Json.JsonWriter.WriteNull">
319 </summary> 319 <summary>
320 <param name="value">The value to convert.</param> 320 Writes a null value.
321 <returns>A Json string representation of the <see cref="T:System.Enum"/>.</returns> 321 </summary>
322 </member> 322 </member>
323 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Int32)"> 323 <member name="M:Newtonsoft.Json.JsonWriter.WriteUndefined">
324 <summary> 324 <summary>
325 Converts the <see cref="T:System.Int32"/> to it's JavaScript string representation. 325 Writes an undefined value.
326 </summary> 326 </summary>
327 <param name="value">The value to convert.</param> 327 </member>
328 <returns>A Json string representation of the <see cref="T:System.Int32"/>.</returns> 328 <member name="M:Newtonsoft.Json.JsonWriter.WriteRaw(System.String)">
329 </member> 329 <summary>
330 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Int16)"> 330 Writes raw JSON without changing the writer's state.
331 <summary> 331 </summary>
332 Converts the <see cref="T:System.Int16"/> to it's JavaScript string representation. 332 <param name="json">The raw JSON to write.</param>
333 </summary> 333 </member>
334 <param name="value">The value to convert.</param> 334 <member name="M:Newtonsoft.Json.JsonWriter.WriteRawValue(System.String)">
335 <returns>A Json string representation of the <see cref="T:System.Int16"/>.</returns> 335 <summary>
336 </member> 336 Writes raw JSON where a value is expected and updates the writer's state.
337 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.UInt16)"> 337 </summary>
338 <summary> 338 <param name="json">The raw JSON to write.</param>
339 Converts the <see cref="T:System.UInt16"/> to it's JavaScript string representation. 339 </member>
340 </summary> 340 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.String)">
341 <param name="value">The value to convert.</param> 341 <summary>
342 <returns>A Json string representation of the <see cref="T:System.UInt16"/>.</returns> 342 Writes a <see cref="T:System.String"/> value.
343 </member> 343 </summary>
344 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.UInt32)"> 344 <param name="value">The <see cref="T:System.String"/> value to write.</param>
345 <summary> 345 </member>
346 Converts the <see cref="T:System.UInt32"/> to it's JavaScript string representation. 346 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int32)">
347 </summary> 347 <summary>
348 <param name="value">The value to convert.</param> 348 Writes a <see cref="T:System.Int32"/> value.
349 <returns>A Json string representation of the <see cref="T:System.UInt32"/>.</returns> 349 </summary>
350 </member> 350 <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
351 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Int64)"> 351 </member>
352 <summary> 352 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt32)">
353 Converts the <see cref="T:System.Int64"/> to it's JavaScript string representation. 353 <summary>
354 </summary> 354 Writes a <see cref="T:System.UInt32"/> value.
355 <param name="value">The value to convert.</param> 355 </summary>
356 <returns>A Json string representation of the <see cref="T:System.Int64"/>.</returns> 356 <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
357 </member> 357 </member>
358 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.UInt64)"> 358 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int64)">
359 <summary> 359 <summary>
360 Converts the <see cref="T:System.UInt64"/> to it's JavaScript string representation. 360 Writes a <see cref="T:System.Int64"/> value.
361 </summary> 361 </summary>
362 <param name="value">The value to convert.</param> 362 <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
363 <returns>A Json string representation of the <see cref="T:System.UInt64"/>.</returns> 363 </member>
364 </member> 364 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt64)">
365 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Single)"> 365 <summary>
366 <summary> 366 Writes a <see cref="T:System.UInt64"/> value.
367 Converts the <see cref="T:System.Single"/> to it's JavaScript string representation. 367 </summary>
368 </summary> 368 <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
369 <param name="value">The value to convert.</param> 369 </member>
370 <returns>A Json string representation of the <see cref="T:System.Single"/>.</returns> 370 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Single)">
371 </member> 371 <summary>
372 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Double)"> 372 Writes a <see cref="T:System.Single"/> value.
373 <summary> 373 </summary>
374 Converts the <see cref="T:System.Double"/> to it's JavaScript string representation. 374 <param name="value">The <see cref="T:System.Single"/> value to write.</param>
375 </summary> 375 </member>
376 <param name="value">The value to convert.</param> 376 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Double)">
377 <returns>A Json string representation of the <see cref="T:System.Double"/>.</returns> 377 <summary>
378 </member> 378 Writes a <see cref="T:System.Double"/> value.
379 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Byte)"> 379 </summary>
380 <summary> 380 <param name="value">The <see cref="T:System.Double"/> value to write.</param>
381 Converts the <see cref="T:System.Byte"/> to it's JavaScript string representation. 381 </member>
382 </summary> 382 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Boolean)">
383 <param name="value">The value to convert.</param> 383 <summary>
384 <returns>A Json string representation of the <see cref="T:System.Byte"/>.</returns> 384 Writes a <see cref="T:System.Boolean"/> value.
385 </member> 385 </summary>
386 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.SByte)"> 386 <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
387 <summary> 387 </member>
388 Converts the <see cref="T:System.SByte"/> to it's JavaScript string representation. 388 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int16)">
389 </summary> 389 <summary>
390 <param name="value">The value to convert.</param> 390 Writes a <see cref="T:System.Int16"/> value.
391 <returns>A Json string representation of the <see cref="T:System.SByte"/>.</returns> 391 </summary>
392 </member> 392 <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
393 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Decimal)"> 393 </member>
394 <summary> 394 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt16)">
395 Converts the <see cref="T:System.Decimal"/> to it's JavaScript string representation. 395 <summary>
396 </summary> 396 Writes a <see cref="T:System.UInt16"/> value.
397 <param name="value">The value to convert.</param> 397 </summary>
398 <returns>A Json string representation of the <see cref="T:System.SByte"/>.</returns> 398 <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
399 </member> 399 </member>
400 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Guid)"> 400 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Char)">
401 <summary> 401 <summary>
402 Converts the <see cref="T:System.Guid"/> to it's JavaScript string representation. 402 Writes a <see cref="T:System.Char"/> value.
403 </summary> 403 </summary>
404 <param name="value">The value to convert.</param> 404 <param name="value">The <see cref="T:System.Char"/> value to write.</param>
405 <returns>A Json string representation of the <see cref="T:System.Guid"/>.</returns> 405 </member>
406 </member> 406 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte)">
407 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.String)"> 407 <summary>
408 <summary> 408 Writes a <see cref="T:System.Byte"/> value.
409 Converts the <see cref="T:System.String"/> to it's JavaScript string representation. 409 </summary>
410 </summary> 410 <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
411 <param name="value">The value to convert.</param> 411 </member>
412 <returns>A Json string representation of the <see cref="T:System.String"/>.</returns> 412 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.SByte)">
413 </member> 413 <summary>
414 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.String,System.Char)"> 414 Writes a <see cref="T:System.SByte"/> value.
415 <summary> 415 </summary>
416 Converts the <see cref="T:System.String"/> to it's JavaScript string representation. 416 <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
417 </summary> 417 </member>
418 <param name="value">The value to convert.</param> 418 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Decimal)">
419 <param name="delimter">The string delimiter character.</param> 419 <summary>
420 <returns>A Json string representation of the <see cref="T:System.String"/>.</returns> 420 Writes a <see cref="T:System.Decimal"/> value.
421 </member> 421 </summary>
422 <member name="M:Newtonsoft.Json.JavaScriptConvert.ToString(System.Object)"> 422 <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
423 <summary> 423 </member>
424 Converts the <see cref="T:System.Object"/> to it's JavaScript string representation. 424 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTime)">
425 </summary> 425 <summary>
426 <param name="value">The value to convert.</param> 426 Writes a <see cref="T:System.DateTime"/> value.
427 <returns>A Json string representation of the <see cref="T:System.Object"/>.</returns> 427 </summary>
428 </member> 428 <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
429 <member name="M:Newtonsoft.Json.JavaScriptConvert.SerializeObject(System.Object)"> 429 </member>
430 <summary> 430 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int32})">
431 Serializes the specified object to a Json object. 431 <summary>
432 </summary> 432 Writes a <see cref="T:System.Nullable`1"/> value.
433 <param name="value">The object to serialize.</param> 433 </summary>
434 <returns>A Json string representation of the object.</returns> 434 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
435 </member> 435 </member>
436 <member name="M:Newtonsoft.Json.JavaScriptConvert.DeserializeObject(System.String)"> 436 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt32})">
437 <summary> 437 <summary>
438 Deserializes the specified object to a Json object. 438 Writes a <see cref="T:System.Nullable`1"/> value.
439 </summary> 439 </summary>
440 <param name="value">The object to deserialize.</param> 440 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
441 <returns>The deserialized object from the Json string.</returns> 441 </member>
442 </member> 442 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int64})">
443 <member name="M:Newtonsoft.Json.JavaScriptConvert.DeserializeObject(System.String,System.Type)"> 443 <summary>
444 <summary> 444 Writes a <see cref="T:System.Nullable`1"/> value.
445 Deserializes the specified object to a Json object. 445 </summary>
446 </summary> 446 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
447 <param name="value">The object to deserialize.</param> 447 </member>
448 <param name="type">The <see cref="T:System.Type"/> of object being deserialized.</param> 448 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt64})">
449 <returns>The deserialized object from the Json string.</returns> 449 <summary>
450 </member> 450 Writes a <see cref="T:System.Nullable`1"/> value.
451 <member name="M:Newtonsoft.Json.JavaScriptConvert.DeserializeObject``1(System.String)"> 451 </summary>
452 <summary> 452 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
453 Deserializes the specified object to a Json object. 453 </member>
454 </summary> 454 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Single})">
455 <typeparam name="T">The type of the object to deserialize.</typeparam> 455 <summary>
456 <param name="value">The object to deserialize.</param> 456 Writes a <see cref="T:System.Nullable`1"/> value.
457 <returns>The deserialized object from the Json string.</returns> 457 </summary>
458 </member> 458 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
459 <member name="M:Newtonsoft.Json.JavaScriptConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonConverter[])"> 459 </member>
460 <summary> 460 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Double})">
461 Deserializes the specified object to a Json object. 461 <summary>
462 </summary> 462 Writes a <see cref="T:System.Nullable`1"/> value.
463 <typeparam name="T">The type of the object to deserialize.</typeparam> 463 </summary>
464 <param name="value">The object to deserialize.</param> 464 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
465 <param name="converters">Converters to use while deserializing.</param> 465 </member>
466 <returns>The deserialized object from the Json string.</returns> 466 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Boolean})">
467 </member> 467 <summary>
468 <member name="T:Newtonsoft.Json.JsonSerializationException"> 468 Writes a <see cref="T:System.Nullable`1"/> value.
469 <summary> 469 </summary>
470 The exception thrown when an error occurs during Json serialization or deserialization. 470 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
471 </summary> 471 </member>
472 </member> 472 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Int16})">
473 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor"> 473 <summary>
474 <summary> 474 Writes a <see cref="T:System.Nullable`1"/> value.
475 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class. 475 </summary>
476 </summary> 476 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
477 </member> 477 </member>
478 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String)"> 478 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.UInt16})">
479 <summary> 479 <summary>
480 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class 480 Writes a <see cref="T:System.Nullable`1"/> value.
481 with a specified error message. 481 </summary>
482 </summary> 482 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
483 <param name="message">The error message that explains the reason for the exception.</param> 483 </member>
484 </member> 484 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Char})">
485 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String,System.Exception)"> 485 <summary>
486 <summary> 486 Writes a <see cref="T:System.Nullable`1"/> value.
487 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class 487 </summary>
488 with a specified error message and a reference to the inner exception that is the cause of this exception. 488 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
489 </summary> 489 </member>
490 <param name="message">The error message that explains the reason for the exception.</param> 490 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Byte})">
491 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> 491 <summary>
492 </member> 492 Writes a <see cref="T:System.Nullable`1"/> value.
493 <member name="T:Newtonsoft.Json.JsonWriterException"> 493 </summary>
494 <summary> 494 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
495 The exception thrown when an error occurs while reading Json text. 495 </member>
496 </summary> 496 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.SByte})">
497 </member> 497 <summary>
498 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor"> 498 Writes a <see cref="T:System.Nullable`1"/> value.
499 <summary> 499 </summary>
500 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class. 500 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
501 </summary> 501 </member>
502 </member> 502 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.Decimal})">
503 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String)"> 503 <summary>
504 <summary> 504 Writes a <see cref="T:System.Nullable`1"/> value.
505 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class 505 </summary>
506 with a specified error message. 506 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
507 </summary> 507 </member>
508 <param name="message">The error message that explains the reason for the exception.</param> 508 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Nullable{System.DateTime})">
509 </member> 509 <summary>
510 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String,System.Exception)"> 510 Writes a <see cref="T:System.Nullable`1"/> value.
511 <summary> 511 </summary>
512 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class 512 <param name="value">The <see cref="T:System.Nullable`1"/> value to write.</param>
513 with a specified error message and a reference to the inner exception that is the cause of this exception. 513 </member>
514 </summary> 514 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte[])">
515 <param name="message">The error message that explains the reason for the exception.</param> 515 <summary>
516 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param> 516 Writes a <see cref="T:Byte[]"/> value.
517 </member> 517 </summary>
518 <member name="T:Newtonsoft.Json.JavaScriptConstructor"> 518 <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
519 <summary> 519 </member>
520 Represents a JavaScript constructor. 520 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Object)">
521 </summary> 521 <summary>
522 </member> 522 Writes a <see cref="T:System.Object"/> value.
523 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty(System.Collections.ICollection)"> 523 An error will raised if the value cannot be written as a single JSON token.
524 <summary> 524 </summary>
525 Determines whether the collection is null or empty. 525 <param name="value">The <see cref="T:System.Object"/> value to write.</param>
526 </summary> 526 </member>
527 <param name="collection">The collection.</param> 527 <member name="M:Newtonsoft.Json.JsonWriter.WriteComment(System.String)">
528 <returns> 528 <summary>
529 <c>true</c> if the collection is null or empty; otherwise, <c>false</c>. 529 Writes out a comment <code>/*...*/</code> containing the specified text.
530 </returns> 530 </summary>
531 </member> 531 <param name="text">Text to place inside the comment.</param>
532 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty``1(System.Collections.Generic.ICollection{``0})"> 532 </member>
533 <summary> 533 <member name="M:Newtonsoft.Json.JsonWriter.WriteWhitespace(System.String)">
534 Determines whether the collection is null or empty. 534 <summary>
535 </summary> 535 Writes out the given white space.
536 <param name="collection">The collection.</param> 536 </summary>
537 <returns> 537 <param name="ws">The string of white space characters.</param>
538 <c>true</c> if the collection is null or empty; otherwise, <c>false</c>. 538 </member>
539 </returns> 539 <member name="P:Newtonsoft.Json.JsonWriter.Top">
540 </member> 540 <summary>
541 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmptyOrDefault``1(System.Collections.Generic.IList{``0})"> 541 Gets the top.
542 <summary> 542 </summary>
543 Determines whether the collection is null, empty or its contents are uninitialized values. 543 <value>The top.</value>
544 </summary> 544 </member>
545 <param name="list">The list.</param> 545 <member name="P:Newtonsoft.Json.JsonWriter.WriteState">
546 <returns> 546 <summary>
547 <c>true</c> if the collection is null or empty or its contents are uninitialized values; otherwise, <c>false</c>. 547 Gets the state of the writer.
548 </returns> 548 </summary>
549 </member> 549 </member>
550 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.Slice``1(System.Collections.Generic.IList{``0},System.Nullable{System.Int32},System.Nullable{System.Int32})"> 550 <member name="P:Newtonsoft.Json.JsonWriter.Formatting">
551 <summary> 551 <summary>
552 Makes a slice of the specified list in between the start and end indexes. 552 Indicates how the output is formatted.
553 </summary> 553 </summary>
554 <param name="list">The list.</param> 554 </member>
555 <param name="start">The start index.</param> 555 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor(Newtonsoft.Json.Linq.JContainer)">
556 <param name="end">The end index.</param> 556 <summary>
557 <returns>A slice of the list.</returns> 557 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class writing to the given <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.
558 </member> 558 </summary>
559 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.Slice``1(System.Collections.Generic.IList{``0},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32})"> 559 <param name="container">The container being written to.</param>
560 <summary> 560 </member>
561 Makes a slice of the specified list in between the start and end indexes, 561 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.#ctor">
562 getting every so many items based upon the step. 562 <summary>
563 </summary> 563 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenWriter"/> class.
564 <param name="list">The list.</param> 564 </summary>
565 <param name="start">The start index.</param> 565 </member>
566 <param name="end">The end index.</param> 566 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Flush">
567 <param name="step">The step.</param> 567 <summary>
568 <returns>A slice of the list.</returns> 568 Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
569 </member> 569 </summary>
570 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.GroupBy``2(System.Collections.Generic.ICollection{``1},Newtonsoft.Json.Utilities.Func{``1,``0})"> 570 </member>
571 <summary> 571 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.Close">
572 Group the collection using a function which returns the key. 572 <summary>
573 </summary> 573 Closes this stream and the underlying stream.
574 <param name="source">The source collection to group.</param> 574 </summary>
575 <param name="keySelector">The key selector.</param> 575 </member>
576 <returns>A Dictionary with each key relating to a list of objects in a list grouped under it.</returns> 576 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartObject">
577 </member> 577 <summary>
578 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.AddRange``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})"> 578 Writes the beginning of a Json object.
579 <summary> 579 </summary>
580 Adds the elements of the specified collection to the specified generic IList. 580 </member>
581 </summary> 581 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartArray">
582 <param name="initial">The list to add to.</param> 582 <summary>
583 <param name="collection">The collection of elements to add.</param> 583 Writes the beginning of a Json array.
584 </member> 584 </summary>
585 <member name="T:Newtonsoft.Json.StringBuffer"> 585 </member>
586 <summary> 586 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteStartConstructor(System.String)">
587 Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. 587 <summary>
588 </summary> 588 Writes the start of a constructor with the given name.
589 </member> 589 </summary>
590 <member name="T:Newtonsoft.Json.JavaScriptObject"> 590 <param name="name">The name of the constructor.</param>
591 <summary> 591 </member>
592 Represents a JavaScript object. 592 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
593 </summary> 593 <summary>
594 </member> 594 Writes the end.
595 <member name="M:Newtonsoft.Json.JavaScriptObject.#ctor"> 595 </summary>
596 <summary> 596 <param name="token">The token.</param>
597 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JavaScriptObject"/> class. 597 </member>
598 </summary> 598 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WritePropertyName(System.String)">
599 </member> 599 <summary>
600 <member name="M:Newtonsoft.Json.JavaScriptObject.#ctor(Newtonsoft.Json.JavaScriptObject)"> 600 Writes the property name of a name/value pair on a Json object.
601 <summary> 601 </summary>
602 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JavaScriptObject"/> class that 602 <param name="name">The name of the property.</param>
603 contains values copied from the specified <see cref="T:Newtonsoft.Json.JavaScriptObject"/>. 603 </member>
604 </summary> 604 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteNull">
605 <param name="javaScriptObject">The <see cref="T:Newtonsoft.Json.JavaScriptObject"/> whose elements are copied to the new object.</param> 605 <summary>
606 </member> 606 Writes a null value.
607 <member name="T:Newtonsoft.Json.JsonToken"> 607 </summary>
608 <summary> 608 </member>
609 Specifies the type of Json token. 609 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteUndefined">
610 </summary> 610 <summary>
611 </member> 611 Writes an undefined value.
612 <member name="F:Newtonsoft.Json.JsonToken.None"> 612 </summary>
613 <summary> 613 </member>
614 This is returned by the <see cref="T:Newtonsoft.Json.JsonReader"/> if a <see cref="M:Newtonsoft.Json.JsonReader.Read"/> method has not been called. 614 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteRaw(System.String)">
615 </summary> 615 <summary>
616 </member> 616 Writes raw JSON.
617 <member name="F:Newtonsoft.Json.JsonToken.StartObject"> 617 </summary>
618 <summary> 618 <param name="json">The raw JSON to write.</param>
619 An object start token. 619 </member>
620 </summary> 620 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteComment(System.String)">
621 </member> 621 <summary>
622 <member name="F:Newtonsoft.Json.JsonToken.StartArray"> 622 Writes out a comment <code>/*...*/</code> containing the specified text.
623 <summary> 623 </summary>
624 An array start token. 624 <param name="text">Text to place inside the comment.</param>
625 </summary> 625 </member>
626 </member> 626 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.String)">
627 <member name="F:Newtonsoft.Json.JsonToken.PropertyName"> 627 <summary>
628 <summary> 628 Writes a <see cref="T:System.String"/> value.
629 An object property name. 629 </summary>
630 </summary> 630 <param name="value">The <see cref="T:System.String"/> value to write.</param>
631 </member> 631 </member>
632 <member name="F:Newtonsoft.Json.JsonToken.Comment"> 632 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int32)">
633 <summary> 633 <summary>
634 A comment. 634 Writes a <see cref="T:System.Int32"/> value.
635 </summary> 635 </summary>
636 </member> 636 <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
637 <member name="F:Newtonsoft.Json.JsonToken.Integer"> 637 </member>
638 <summary> 638 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt32)">
639 An interger. 639 <summary>
640 </summary> 640 Writes a <see cref="T:System.UInt32"/> value.
641 </member> 641 </summary>
642 <member name="F:Newtonsoft.Json.JsonToken.Float"> 642 <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
643 <summary> 643 </member>
644 A float. 644 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int64)">
645 </summary> 645 <summary>
646 </member> 646 Writes a <see cref="T:System.Int64"/> value.
647 <member name="F:Newtonsoft.Json.JsonToken.String"> 647 </summary>
648 <summary> 648 <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
649 A string. 649 </member>
650 </summary> 650 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt64)">
651 </member> 651 <summary>
652 <member name="F:Newtonsoft.Json.JsonToken.Boolean"> 652 Writes a <see cref="T:System.UInt64"/> value.
653 <summary> 653 </summary>
654 A boolean. 654 <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
655 </summary> 655 </member>
656 </member> 656 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Single)">
657 <member name="F:Newtonsoft.Json.JsonToken.Null"> 657 <summary>
658 <summary> 658 Writes a <see cref="T:System.Single"/> value.
659 A null token. 659 </summary>
660 </summary> 660 <param name="value">The <see cref="T:System.Single"/> value to write.</param>
661 </member> 661 </member>
662 <member name="F:Newtonsoft.Json.JsonToken.Undefined"> 662 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Double)">
663 <summary> 663 <summary>
664 An undefined token. 664 Writes a <see cref="T:System.Double"/> value.
665 </summary> 665 </summary>
666 </member> 666 <param name="value">The <see cref="T:System.Double"/> value to write.</param>
667 <member name="F:Newtonsoft.Json.JsonToken.EndObject"> 667 </member>
668 <summary> 668 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Boolean)">
669 An object end token. 669 <summary>
670 </summary> 670 Writes a <see cref="T:System.Boolean"/> value.
671 </member> 671 </summary>
672 <member name="F:Newtonsoft.Json.JsonToken.EndArray"> 672 <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
673 <summary> 673 </member>
674 An array end token. 674 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Int16)">
675 </summary> 675 <summary>
676 </member> 676 Writes a <see cref="T:System.Int16"/> value.
677 <member name="F:Newtonsoft.Json.JsonToken.Constructor"> 677 </summary>
678 <summary> 678 <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
679 A JavaScript object constructor. 679 </member>
680 </summary> 680 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.UInt16)">
681 </member> 681 <summary>
682 <member name="F:Newtonsoft.Json.JsonToken.Date"> 682 Writes a <see cref="T:System.UInt16"/> value.
683 <summary> 683 </summary>
684 A Date. 684 <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
685 </summary> 685 </member>
686 </member> 686 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Char)">
687 <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.IsNamespaceAttribute(System.String,System.String@)"> 687 <summary>
688 <summary> 688 Writes a <see cref="T:System.Char"/> value.
689 Checks if the attributeName is a namespace attribute. 689 </summary>
690 </summary> 690 <param name="value">The <see cref="T:System.Char"/> value to write.</param>
691 <param name="attributeName">Attribute name to test.</param> 691 </member>
692 <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param> 692 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte)">
693 <returns>True if attribute name is for a namespace attribute, otherwise false.</returns> 693 <summary>
694 </member> 694 Writes a <see cref="T:System.Byte"/> value.
695 <member name="T:Newtonsoft.Json.WriteState"> 695 </summary>
696 <summary> 696 <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
697 Specifies the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>. 697 </member>
698 </summary> 698 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.SByte)">
699 </member> 699 <summary>
700 <member name="F:Newtonsoft.Json.WriteState.Error"> 700 Writes a <see cref="T:System.SByte"/> value.
701 <summary> 701 </summary>
702 An exception has been thrown, which has left the <see cref="T:Newtonsoft.Json.JsonWriter"/> in an invalid state. 702 <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
703 You may call the <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method to put the <see cref="T:Newtonsoft.Json.JsonWriter"/> in the <c>Closed</c> state. 703 </member>
704 Any other <see cref="T:Newtonsoft.Json.JsonWriter"/> method calls results in an <see cref="T:System.InvalidOperationException"/> being thrown. 704 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Decimal)">
705 </summary> 705 <summary>
706 </member> 706 Writes a <see cref="T:System.Decimal"/> value.
707 <member name="F:Newtonsoft.Json.WriteState.Closed"> 707 </summary>
708 <summary> 708 <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
709 The <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method has been called. 709 </member>
710 </summary> 710 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.DateTime)">
711 </member> 711 <summary>
712 <member name="F:Newtonsoft.Json.WriteState.Object"> 712 Writes a <see cref="T:System.DateTime"/> value.
713 <summary> 713 </summary>
714 An object is being written. 714 <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
715 </summary> 715 </member>
716 </member> 716 <member name="M:Newtonsoft.Json.Linq.JTokenWriter.WriteValue(System.Byte[])">
717 <member name="F:Newtonsoft.Json.WriteState.Array"> 717 <summary>
718 <summary> 718 Writes a <see cref="T:Byte[]"/> value.
719 A array is being written. 719 </summary>
720 </summary> 720 <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
721 </member> 721 </member>
722 <member name="F:Newtonsoft.Json.WriteState.Property"> 722 <member name="P:Newtonsoft.Json.Linq.JTokenWriter.Token">
723 <summary> 723 <summary>
724 A property is being written. 724 Gets the token being writen.
725 </summary> 725 </summary>
726 </member> 726 <value>The token being writen.</value>
727 <member name="F:Newtonsoft.Json.WriteState.Start"> 727 </member>
728 <summary> 728 <member name="M:Newtonsoft.Json.Bson.BsonWriter.#ctor(System.IO.Stream)">
729 A write method has not been called. 729 <summary>
730 </summary> 730 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Bson.BsonWriter"/> class.
731 </member> 731 </summary>
732 <member name="T:Newtonsoft.Json.Formatting"> 732 <param name="stream">The stream.</param>
733 <summary> 733 </member>
734 Specifies formatting options for the <see cref="T:Newtonsoft.Json.JsonWriter"/>. 734 <member name="M:Newtonsoft.Json.Bson.BsonWriter.Flush">
735 </summary> 735 <summary>
736 </member> 736 Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
737 <member name="F:Newtonsoft.Json.Formatting.None"> 737 </summary>
738 <summary> 738 </member>
739 No special formatting is applied. This is the default. 739 <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
740 </summary> 740 <summary>
741 </member> 741 Writes the end.
742 <member name="F:Newtonsoft.Json.Formatting.Indented"> 742 </summary>
743 <summary> 743 <param name="token">The token.</param>
744 Causes child objects to be indented according to the <see cref="P:Newtonsoft.Json.JsonWriter.Indentation"/> and <see cref="P:Newtonsoft.Json.JsonWriter.IndentChar"/> settings. 744 </member>
745 </summary> 745 <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteComment(System.String)">
746 </member> 746 <summary>
747 <member name="T:Newtonsoft.Json.JsonWriter"> 747 Writes out a comment <code>/*...*/</code> containing the specified text.
748 <summary> 748 </summary>
749 Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. 749 <param name="text">Text to place inside the comment.</param>
750 </summary> 750 </member>
751 </member> 751 <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteStartConstructor(System.String)">
752 <member name="M:Newtonsoft.Json.JsonWriter.#ctor(System.IO.TextWriter)"> 752 <summary>
753 <summary> 753 Writes the start of a constructor with the given name.
754 Creates an instance of the <c>JsonWriter</c> class using the specified <see cref="T:System.IO.TextWriter"/>. 754 </summary>
755 </summary> 755 <param name="name">The name of the constructor.</param>
756 <param name="textWriter">The <c>TextWriter</c> to write to.</param> 756 </member>
757 </member> 757 <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRaw(System.String)">
758 <member name="M:Newtonsoft.Json.JsonWriter.Flush"> 758 <summary>
759 <summary> 759 Writes raw JSON.
760 Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. 760 </summary>
761 </summary> 761 <param name="json">The raw JSON to write.</param>
762 </member> 762 </member>
763 <member name="M:Newtonsoft.Json.JsonWriter.Close"> 763 <member name="M:Newtonsoft.Json.Bson.BsonWriter.WriteRawValue(System.String)">
764 <summary> 764 <summary>
765 Closes this stream and the underlying stream. 765 Writes raw JSON where a value is expected and updates the writer's state.
766 </summary> 766 </summary>
767 </member> 767 <param name="json">The raw JSON to write.</param>
768 <member name="M:Newtonsoft.Json.JsonWriter.WriteStartObject"> 768 </member>
769 <summary> 769 <member name="T:Newtonsoft.Json.ConstructorHandling">
770 Writes the beginning of a Json object. 770 <summary>
771 </summary> 771 Specifies how constructors are used when initializing objects during deserialization by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
772 </member> 772 </summary>
773 <member name="M:Newtonsoft.Json.JsonWriter.WriteEndObject"> 773 </member>
774 <summary> 774 <member name="F:Newtonsoft.Json.ConstructorHandling.Default">
775 Writes the end of a Json object. 775 <summary>
776 </summary> 776 First attempt to use the public default constructor then fall back to single paramatized constructor.
777 </member> 777 </summary>
778 <member name="M:Newtonsoft.Json.JsonWriter.WriteStartArray"> 778 </member>
779 <summary> 779 <member name="F:Newtonsoft.Json.ConstructorHandling.AllowNonPublicDefaultConstructor">
780 Writes the beginning of a Json array. 780 <summary>
781 </summary> 781 Allow Json.NET to use a non-public default constructor.
782 </member> 782 </summary>
783 <member name="M:Newtonsoft.Json.JsonWriter.WriteEndArray"> 783 </member>
784 <summary> 784 <member name="T:Newtonsoft.Json.Converters.BinaryConverter">
785 Writes the end of an array. 785 <summary>
786 </summary> 786 Converts a binary value to and from a base 64 string value.
787 </member> 787 </summary>
788 <member name="M:Newtonsoft.Json.JsonWriter.WritePropertyName(System.String)"> 788 </member>
789 <summary> 789 <member name="T:Newtonsoft.Json.JsonConverter">
790 Writes the property name of a name/value pair on a Json object. 790 <summary>
791 </summary> 791 Converts an object to and from JSON.
792 <param name="name"></param> 792 </summary>
793 </member> 793 </member>
794 <member name="M:Newtonsoft.Json.JsonWriter.WriteEnd"> 794 <member name="M:Newtonsoft.Json.JsonConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
795 <summary> 795 <summary>
796 Writes the end of the current Json object or array. 796 Writes the JSON representation of the object.
797 </summary> 797 </summary>
798 </member> 798 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
799 <member name="M:Newtonsoft.Json.JsonWriter.WriteNull"> 799 <param name="value">The value.</param>
800 <summary> 800 <param name="serializer">The calling serializer.</param>
801 Writes a null value. 801 </member>
802 </summary> 802 <member name="M:Newtonsoft.Json.JsonConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
803 </member> 803 <summary>
804 <member name="M:Newtonsoft.Json.JsonWriter.WriteUndefined"> 804 Reads the JSON representation of the object.
805 <summary> 805 </summary>
806 Writes an undefined value. 806 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
807 </summary> 807 <param name="objectType">Type of the object.</param>
808 </member> 808 <param name="serializer">The calling serializer.</param>
809 <member name="M:Newtonsoft.Json.JsonWriter.WriteRaw(System.String)"> 809 <returns>The object value.</returns>
810 <summary> 810 </member>
811 Writes raw JavaScript manually. 811 <member name="M:Newtonsoft.Json.JsonConverter.CanConvert(System.Type)">
812 </summary> 812 <summary>
813 <param name="javaScript">The raw JavaScript to write.</param> 813 Determines whether this instance can convert the specified object type.
814 </member> 814 </summary>
815 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.String)"> 815 <param name="objectType">Type of the object.</param>
816 <summary> 816 <returns>
817 Writes a <see cref="T:System.String"/> value. 817 <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
818 </summary> 818 </returns>
819 <param name="value">The <see cref="T:System.String"/> value to write.</param> 819 </member>
820 </member> 820 <member name="M:Newtonsoft.Json.Converters.BinaryConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
821 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int32)"> 821 <summary>
822 <summary> 822 Writes the JSON representation of the object.
823 Writes a <see cref="T:System.Int32"/> value. 823 </summary>
824 </summary> 824 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
825 <param name="value">The <see cref="T:System.Int32"/> value to write.</param> 825 <param name="value">The value.</param>
826 </member> 826 <param name="serializer">The calling serializer.</param>
827 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt32)"> 827 </member>
828 <summary> 828 <member name="M:Newtonsoft.Json.Converters.BinaryConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
829 Writes a <see cref="T:System.UInt32"/> value. 829 <summary>
830 </summary> 830 Reads the JSON representation of the object.
831 <param name="value">The <see cref="T:System.UInt32"/> value to write.</param> 831 </summary>
832 </member> 832 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
833 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int64)"> 833 <param name="objectType">Type of the object.</param>
834 <summary> 834 <param name="serializer">The calling serializer.</param>
835 Writes a <see cref="T:System.Int64"/> value. 835 <returns>The object value.</returns>
836 </summary> 836 </member>
837 <param name="value">The <see cref="T:System.Int64"/> value to write.</param> 837 <member name="M:Newtonsoft.Json.Converters.BinaryConverter.CanConvert(System.Type)">
838 </member> 838 <summary>
839 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt64)"> 839 Determines whether this instance can convert the specified object type.
840 <summary> 840 </summary>
841 Writes a <see cref="T:System.UInt64"/> value. 841 <param name="objectType">Type of the object.</param>
842 </summary> 842 <returns>
843 <param name="value">The <see cref="T:System.UInt64"/> value to write.</param> 843 <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
844 </member> 844 </returns>
845 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Single)"> 845 </member>
846 <summary> 846 <member name="T:Newtonsoft.Json.Converters.CustomCreationConverter`1">
847 Writes a <see cref="T:System.Single"/> value. 847 <summary>
848 </summary> 848 Create a custom object
849 <param name="value">The <see cref="T:System.Single"/> value to write.</param> 849 </summary>
850 </member> 850 <typeparam name="T"></typeparam>
851 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Double)"> 851 </member>
852 <summary> 852 <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
853 Writes a <see cref="T:System.Double"/> value. 853 <summary>
854 </summary> 854 Writes the JSON representation of the object.
855 <param name="value">The <see cref="T:System.Double"/> value to write.</param> 855 </summary>
856 </member> 856 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
857 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Boolean)"> 857 <param name="value">The value.</param>
858 <summary> 858 <param name="serializer">The calling serializer.</param>
859 Writes a <see cref="T:System.Boolean"/> value. 859 </member>
860 </summary> 860 <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
861 <param name="value">The <see cref="T:System.Boolean"/> value to write.</param> 861 <summary>
862 </member> 862 Reads the JSON representation of the object.
863 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Int16)"> 863 </summary>
864 <summary> 864 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
865 Writes a <see cref="T:System.Int16"/> value. 865 <param name="objectType">Type of the object.</param>
866 </summary> 866 <param name="serializer">The calling serializer.</param>
867 <param name="value">The <see cref="T:System.Int16"/> value to write.</param> 867 <returns>The object value.</returns>
868 </member> 868 </member>
869 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.UInt16)"> 869 <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.Create(System.Type)">
870 <summary> 870 <summary>
871 Writes a <see cref="T:System.UInt16"/> value. 871 Creates an object which will then be populated by the serializer.
872 </summary> 872 </summary>
873 <param name="value">The <see cref="T:System.UInt16"/> value to write.</param> 873 <param name="objectType">Type of the object.</param>
874 </member> 874 <returns></returns>
875 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Char)"> 875 </member>
876 <summary> 876 <member name="M:Newtonsoft.Json.Converters.CustomCreationConverter`1.CanConvert(System.Type)">
877 Writes a <see cref="T:System.Char"/> value. 877 <summary>
878 </summary> 878 Determines whether this instance can convert the specified object type.
879 <param name="value">The <see cref="T:System.Char"/> value to write.</param> 879 </summary>
880 </member> 880 <param name="objectType">Type of the object.</param>
881 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Byte)"> 881 <returns>
882 <summary> 882 <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
883 Writes a <see cref="T:System.Byte"/> value. 883 </returns>
884 </summary> 884 </member>
885 <param name="value">The <see cref="T:System.Byte"/> value to write.</param> 885 <member name="T:Newtonsoft.Json.Converters.DataSetConverter">
886 </member> 886 <summary>
887 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.SByte)"> 887 Converts a <see cref="T:System.Data.DataSet"/> to and from JSON.
888 <summary> 888 </summary>
889 Writes a <see cref="T:System.SByte"/> value. 889 </member>
890 </summary> 890 <member name="M:Newtonsoft.Json.Converters.DataSetConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
891 <param name="value">The <see cref="T:System.SByte"/> value to write.</param> 891 <summary>
892 </member> 892 Writes the JSON representation of the object.
893 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.Decimal)"> 893 </summary>
894 <summary> 894 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
895 Writes a <see cref="T:System.Decimal"/> value. 895 <param name="value">The value.</param>
896 </summary> 896 <param name="serializer">The calling serializer.</param>
897 <param name="value">The <see cref="T:System.Decimal"/> value to write.</param> 897 </member>
898 </member> 898 <member name="M:Newtonsoft.Json.Converters.DataSetConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
899 <member name="M:Newtonsoft.Json.JsonWriter.WriteValue(System.DateTime)"> 899 <summary>
900 <summary> 900 Reads the JSON representation of the object.
901 Writes a <see cref="T:System.DateTime"/> value. 901 </summary>
902 </summary> 902 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
903 <param name="value">The <see cref="T:System.DateTime"/> value to write.</param> 903 <param name="objectType">Type of the object.</param>
904 </member> 904 <param name="serializer">The calling serializer.</param>
905 <member name="M:Newtonsoft.Json.JsonWriter.WriteComment(System.String)"> 905 <returns>The object value.</returns>
906 <summary> 906 </member>
907 Writes out a comment <code>/*...*/</code> containing the specified text. 907 <member name="M:Newtonsoft.Json.Converters.DataSetConverter.CanConvert(System.Type)">
908 </summary> 908 <summary>
909 <param name="text">Text to place inside the comment.</param> 909 Determines whether this instance can convert the specified value type.
910 </member> 910 </summary>
911 <member name="M:Newtonsoft.Json.JsonWriter.WriteWhitespace(System.String)"> 911 <param name="valueType">Type of the value.</param>
912 <summary> 912 <returns>
913 Writes out the given white space. 913 <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
914 </summary> 914 </returns>
915 <param name="ws">The string of white space characters.</param> 915 </member>
916 </member> 916 <member name="T:Newtonsoft.Json.Converters.DataTableConverter">
917 <member name="P:Newtonsoft.Json.JsonWriter.WriteState"> 917 <summary>
918 <summary> 918 Converts a <see cref="T:System.Data.DataTable"/> to and from JSON.
919 Gets the state of the writer. 919 </summary>
920 </summary> 920 </member>
921 </member> 921 <member name="M:Newtonsoft.Json.Converters.DataTableConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
922 <member name="P:Newtonsoft.Json.JsonWriter.Formatting"> 922 <summary>
923 <summary> 923 Writes the JSON representation of the object.
924 Indicates how the output is formatted. 924 </summary>
925 </summary> 925 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
926 </member> 926 <param name="value">The value.</param>
927 <member name="P:Newtonsoft.Json.JsonWriter.Indentation"> 927 <param name="serializer">The calling serializer.</param>
928 <summary> 928 </member>
929 Gets or sets how many IndentChars to write for each level in the hierarchy when <paramref name="Formatting"/> is set to <c>Formatting.Indented</c>. 929 <member name="M:Newtonsoft.Json.Converters.DataTableConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
930 </summary> 930 <summary>
931 </member> 931 Reads the JSON representation of the object.
932 <member name="P:Newtonsoft.Json.JsonWriter.QuoteChar"> 932 </summary>
933 <summary> 933 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
934 Gets or sets which character to use to quote attribute values. 934 <param name="objectType">Type of the object.</param>
935 </summary> 935 <param name="serializer">The calling serializer.</param>
936 </member> 936 <returns>The object value.</returns>
937 <member name="P:Newtonsoft.Json.JsonWriter.IndentChar"> 937 </member>
938 <summary> 938 <member name="M:Newtonsoft.Json.Converters.DataTableConverter.CanConvert(System.Type)">
939 Gets or sets which character to use for indenting when <paramref name="Formatting"/> is set to <c>Formatting.Indented</c>. 939 <summary>
940 </summary> 940 Determines whether this instance can convert the specified value type.
941 </member> 941 </summary>
942 <member name="P:Newtonsoft.Json.JsonWriter.QuoteName"> 942 <param name="valueType">Type of the value.</param>
943 <summary> 943 <returns>
944 Gets or sets a value indicating whether object names will be surrounded with quotes. 944 <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
945 </summary> 945 </returns>
946 </member> 946 </member>
947 <member name="T:Newtonsoft.Json.JsonReader"> 947 <member name="T:Newtonsoft.Json.Converters.DateTimeConverterBase">
948 <summary> 948 <summary>
949 Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. 949 Provides a base class for converting a <see cref="T:System.DateTime"/> to and from JSON.
950 </summary> 950 </summary>
951 </member> 951 </member>
952 <member name="M:Newtonsoft.Json.JsonReader.#ctor(System.IO.TextReader)"> 952 <member name="M:Newtonsoft.Json.Converters.DateTimeConverterBase.CanConvert(System.Type)">
953 <summary> 953 <summary>
954 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class with the specified <see cref="T:System.IO.TextReader"/>. 954 Determines whether this instance can convert the specified object type.
955 </summary> 955 </summary>
956 <param name="reader">The <c>TextReader</c> containing the XML data to read.</param> 956 <param name="objectType">Type of the object.</param>
957 </member> 957 <returns>
958 <member name="M:Newtonsoft.Json.JsonReader.Read"> 958 <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
959 <summary> 959 </returns>
960 Reads the next Json token from the stream. 960 </member>
961 </summary> 961 <member name="T:Newtonsoft.Json.Converters.StringEnumConverter">
962 <returns></returns> 962 <summary>
963 </member> 963 Converts an <see cref="T:System.Enum"/> to and from its name string value.
964 <member name="M:Newtonsoft.Json.JsonReader.Close"> 964 </summary>
965 <summary> 965 </member>
966 Changes the <see cref="T:Newtonsoft.Json.JsonReader.State"/> to Closed. 966 <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
967 </summary> 967 <summary>
968 </member> 968 Writes the JSON representation of the object.
969 <member name="P:Newtonsoft.Json.JsonReader.QuoteChar"> 969 </summary>
970 <summary> 970 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
971 Gets the quotation mark character used to enclose the value of a string. 971 <param name="value">The value.</param>
972 </summary> 972 <param name="serializer">The calling serializer.</param>
973 </member> 973 </member>
974 <member name="P:Newtonsoft.Json.JsonReader.TokenType"> 974 <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
975 <summary> 975 <summary>
976 Gets the type of the current Json token. 976 Reads the JSON representation of the object.
977 </summary> 977 </summary>
978 </member> 978 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
979 <member name="P:Newtonsoft.Json.JsonReader.Value"> 979 <param name="objectType">Type of the object.</param>
980 <summary> 980 <param name="serializer">The calling serializer.</param>
981 Gets the text value of the current Json token. 981 <returns>The object value.</returns>
982 </summary> 982 </member>
983 </member> 983 <member name="M:Newtonsoft.Json.Converters.StringEnumConverter.CanConvert(System.Type)">
984 <member name="P:Newtonsoft.Json.JsonReader.ValueType"> 984 <summary>
985 <summary> 985 Determines whether this instance can convert the specified object type.
986 Gets The Common Language Runtime (CLR) type for the current Json token. 986 </summary>
987 </summary> 987 <param name="objectType">Type of the object.</param>
988 </member> 988 <returns>
989 </members> 989 <c>true</c> if this instance can convert the specified object type; otherwise, <c>false</c>.
990</doc> 990 </returns>
991 </member>
992 <member name="T:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor">
993 <summary>
994 Represents a view of a <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.
995 </summary>
996 </member>
997 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.#ctor(System.String,System.Type)">
998 <summary>
999 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor"/> class.
1000 </summary>
1001 <param name="name">The name.</param>
1002 <param name="propertyType">Type of the property.</param>
1003 </member>
1004 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.CanResetValue(System.Object)">
1005 <summary>
1006 When overridden in a derived class, returns whether resetting an object changes its value.
1007 </summary>
1008 <returns>
1009 true if resetting the component changes its value; otherwise, false.
1010 </returns>
1011 <param name="component">The component to test for reset capability.
1012 </param>
1013 </member>
1014 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.GetValue(System.Object)">
1015 <summary>
1016 When overridden in a derived class, gets the current value of the property on a component.
1017 </summary>
1018 <returns>
1019 The value of a property for a given component.
1020 </returns>
1021 <param name="component">The component with the property for which to retrieve the value.
1022 </param>
1023 </member>
1024 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.ResetValue(System.Object)">
1025 <summary>
1026 When overridden in a derived class, resets the value for this property of the component to the default value.
1027 </summary>
1028 <param name="component">The component with the property value that is to be reset to the default value.
1029 </param>
1030 </member>
1031 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.SetValue(System.Object,System.Object)">
1032 <summary>
1033 When overridden in a derived class, sets the value of the component to a different value.
1034 </summary>
1035 <param name="component">The component with the property value that is to be set.
1036 </param><param name="value">The new value.
1037 </param>
1038 </member>
1039 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.ShouldSerializeValue(System.Object)">
1040 <summary>
1041 When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted.
1042 </summary>
1043 <returns>
1044 true if the property should be persisted; otherwise, false.
1045 </returns>
1046 <param name="component">The component with the property to be examined for persistence.
1047 </param>
1048 </member>
1049 <member name="P:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.ComponentType">
1050 <summary>
1051 When overridden in a derived class, gets the type of the component this property is bound to.
1052 </summary>
1053 <returns>
1054 A <see cref="T:System.Type"/> that represents the type of component this property is bound to. When the <see cref="M:System.ComponentModel.PropertyDescriptor.GetValue(System.Object)"/> or <see cref="M:System.ComponentModel.PropertyDescriptor.SetValue(System.Object,System.Object)"/> methods are invoked, the object specified might be an instance of this type.
1055 </returns>
1056 </member>
1057 <member name="P:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.IsReadOnly">
1058 <summary>
1059 When overridden in a derived class, gets a value indicating whether this property is read-only.
1060 </summary>
1061 <returns>
1062 true if the property is read-only; otherwise, false.
1063 </returns>
1064 </member>
1065 <member name="P:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.PropertyType">
1066 <summary>
1067 When overridden in a derived class, gets the type of the property.
1068 </summary>
1069 <returns>
1070 A <see cref="T:System.Type"/> that represents the type of the property.
1071 </returns>
1072 </member>
1073 <member name="P:Newtonsoft.Json.Linq.ComponentModel.JPropertyDescriptor.NameHashCode">
1074 <summary>
1075 Gets the hash code for the name of the member.
1076 </summary>
1077 <value></value>
1078 <returns>
1079 The hash code for the name of the member.
1080 </returns>
1081 </member>
1082 <member name="T:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor">
1083 <summary>
1084 Represents a view of a <see cref="T:Newtonsoft.Json.Linq.JObject"/>.
1085 </summary>
1086 </member>
1087 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.#ctor(Newtonsoft.Json.Linq.JObject)">
1088 <summary>
1089 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor"/> class.
1090 </summary>
1091 <param name="value">The value.</param>
1092 </member>
1093 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetProperties">
1094 <summary>
1095 Returns the properties for this instance of a component.
1096 </summary>
1097 <returns>
1098 A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the properties for this component instance.
1099 </returns>
1100 </member>
1101 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetProperties(System.Attribute[])">
1102 <summary>
1103 Returns the properties for this instance of a component using the attribute array as a filter.
1104 </summary>
1105 <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
1106 <returns>
1107 A <see cref="T:System.ComponentModel.PropertyDescriptorCollection"/> that represents the filtered properties for this component instance.
1108 </returns>
1109 </member>
1110 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetAttributes">
1111 <summary>
1112 Returns a collection of custom attributes for this instance of a component.
1113 </summary>
1114 <returns>
1115 An <see cref="T:System.ComponentModel.AttributeCollection"/> containing the attributes for this object.
1116 </returns>
1117 </member>
1118 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetClassName">
1119 <summary>
1120 Returns the class name of this instance of a component.
1121 </summary>
1122 <returns>
1123 The class name of the object, or null if the class does not have a name.
1124 </returns>
1125 </member>
1126 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetComponentName">
1127 <summary>
1128 Returns the name of this instance of a component.
1129 </summary>
1130 <returns>
1131 The name of the object, or null if the object does not have a name.
1132 </returns>
1133 </member>
1134 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetConverter">
1135 <summary>
1136 Returns a type converter for this instance of a component.
1137 </summary>
1138 <returns>
1139 A <see cref="T:System.ComponentModel.TypeConverter"/> that is the converter for this object, or null if there is no <see cref="T:System.ComponentModel.TypeConverter"/> for this object.
1140 </returns>
1141 </member>
1142 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetDefaultEvent">
1143 <summary>
1144 Returns the default event for this instance of a component.
1145 </summary>
1146 <returns>
1147 An <see cref="T:System.ComponentModel.EventDescriptor"/> that represents the default event for this object, or null if this object does not have events.
1148 </returns>
1149 </member>
1150 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetDefaultProperty">
1151 <summary>
1152 Returns the default property for this instance of a component.
1153 </summary>
1154 <returns>
1155 A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the default property for this object, or null if this object does not have properties.
1156 </returns>
1157 </member>
1158 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetEditor(System.Type)">
1159 <summary>
1160 Returns an editor of the specified type for this instance of a component.
1161 </summary>
1162 <param name="editorBaseType">A <see cref="T:System.Type"/> that represents the editor for this object.</param>
1163 <returns>
1164 An <see cref="T:System.Object"/> of the specified type that is the editor for this object, or null if the editor cannot be found.
1165 </returns>
1166 </member>
1167 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetEvents(System.Attribute[])">
1168 <summary>
1169 Returns the events for this instance of a component using the specified attribute array as a filter.
1170 </summary>
1171 <param name="attributes">An array of type <see cref="T:System.Attribute"/> that is used as a filter.</param>
1172 <returns>
1173 An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the filtered events for this component instance.
1174 </returns>
1175 </member>
1176 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetEvents">
1177 <summary>
1178 Returns the events for this instance of a component.
1179 </summary>
1180 <returns>
1181 An <see cref="T:System.ComponentModel.EventDescriptorCollection"/> that represents the events for this component instance.
1182 </returns>
1183 </member>
1184 <member name="M:Newtonsoft.Json.Linq.ComponentModel.JTypeDescriptor.GetPropertyOwner(System.ComponentModel.PropertyDescriptor)">
1185 <summary>
1186 Returns an object that contains the property described by the specified property descriptor.
1187 </summary>
1188 <param name="pd">A <see cref="T:System.ComponentModel.PropertyDescriptor"/> that represents the property whose owner is to be found.</param>
1189 <returns>
1190 An <see cref="T:System.Object"/> that represents the owner of the specified property.
1191 </returns>
1192 </member>
1193 <member name="T:Newtonsoft.Json.Linq.JRaw">
1194 <summary>
1195 Represents a raw JSON string.
1196 </summary>
1197 </member>
1198 <member name="T:Newtonsoft.Json.Linq.JValue">
1199 <summary>
1200 Represents a value in JSON (string, integer, date, etc).
1201 </summary>
1202 </member>
1203 <member name="T:Newtonsoft.Json.Linq.JToken">
1204 <summary>
1205 Represents an abstract JSON token.
1206 </summary>
1207 </member>
1208 <member name="T:Newtonsoft.Json.Linq.IJEnumerable`1">
1209 <summary>
1210 Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
1211 </summary>
1212 <typeparam name="T">The type of token</typeparam>
1213 </member>
1214 <member name="P:Newtonsoft.Json.Linq.IJEnumerable`1.Item(System.Object)">
1215 <summary>
1216 Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> with the specified key.
1217 </summary>
1218 <value></value>
1219 </member>
1220 <member name="T:Newtonsoft.Json.IJsonLineInfo">
1221 <summary>
1222 Provides an interface to enable a class to return line and position information.
1223 </summary>
1224 </member>
1225 <member name="M:Newtonsoft.Json.IJsonLineInfo.HasLineInfo">
1226 <summary>
1227 Gets a value indicating whether the class can return line information.
1228 </summary>
1229 <returns>
1230 <c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
1231 </returns>
1232 </member>
1233 <member name="P:Newtonsoft.Json.IJsonLineInfo.LineNumber">
1234 <summary>
1235 Gets the current line number.
1236 </summary>
1237 <value>The current line number or 0 if no line information is available (for example, HasLineInfo returns false).</value>
1238 </member>
1239 <member name="P:Newtonsoft.Json.IJsonLineInfo.LinePosition">
1240 <summary>
1241 Gets the current line position.
1242 </summary>
1243 <value>The current line position or 0 if no line information is available (for example, HasLineInfo returns false).</value>
1244 </member>
1245 <member name="M:Newtonsoft.Json.Linq.JToken.DeepEquals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)">
1246 <summary>
1247 Compares the values of two tokens, including the values of all descendant tokens.
1248 </summary>
1249 <param name="t1">The first <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
1250 <param name="t2">The second <see cref="T:Newtonsoft.Json.Linq.JToken"/> to compare.</param>
1251 <returns>true if the tokens are equal; otherwise false.</returns>
1252 </member>
1253 <member name="M:Newtonsoft.Json.Linq.JToken.AddAfterSelf(System.Object)">
1254 <summary>
1255 Adds the specified content immediately after this token.
1256 </summary>
1257 <param name="content">A content object that contains simple content or a collection of content objects to be added after this token.</param>
1258 </member>
1259 <member name="M:Newtonsoft.Json.Linq.JToken.AddBeforeSelf(System.Object)">
1260 <summary>
1261 Adds the specified content immediately before this token.
1262 </summary>
1263 <param name="content">A content object that contains simple content or a collection of content objects to be added before this token.</param>
1264 </member>
1265 <member name="M:Newtonsoft.Json.Linq.JToken.Ancestors">
1266 <summary>
1267 Returns a collection of the ancestor tokens of this token.
1268 </summary>
1269 <returns>A collection of the ancestor tokens of this token.</returns>
1270 </member>
1271 <member name="M:Newtonsoft.Json.Linq.JToken.AfterSelf">
1272 <summary>
1273 Returns a collection of the sibling tokens after this token, in document order.
1274 </summary>
1275 <returns>A collection of the sibling tokens after this tokens, in document order.</returns>
1276 </member>
1277 <member name="M:Newtonsoft.Json.Linq.JToken.BeforeSelf">
1278 <summary>
1279 Returns a collection of the sibling tokens before this token, in document order.
1280 </summary>
1281 <returns>A collection of the sibling tokens before this token, in document order.</returns>
1282 </member>
1283 <member name="M:Newtonsoft.Json.Linq.JToken.Value``1(System.Object)">
1284 <summary>
1285 Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key converted to the specified type.
1286 </summary>
1287 <typeparam name="T">The type to convert the token to.</typeparam>
1288 <param name="key">The token key.</param>
1289 <returns>The converted token value.</returns>
1290 </member>
1291 <member name="M:Newtonsoft.Json.Linq.JToken.Children">
1292 <summary>
1293 Returns a collection of the child tokens of this token, in document order.
1294 </summary>
1295 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
1296 </member>
1297 <member name="M:Newtonsoft.Json.Linq.JToken.Children``1">
1298 <summary>
1299 Returns a collection of the child tokens of this token, in document order, filtered by the specified type.
1300 </summary>
1301 <typeparam name="T">The type to filter the child tokens on.</typeparam>
1302 <returns>A <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
1303 </member>
1304 <member name="M:Newtonsoft.Json.Linq.JToken.Values``1">
1305 <summary>
1306 Returns a collection of the child values of this token, in document order.
1307 </summary>
1308 <typeparam name="T">The type to convert the values to.</typeparam>
1309 <returns>A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.</returns>
1310 </member>
1311 <member name="M:Newtonsoft.Json.Linq.JToken.Remove">
1312 <summary>
1313 Removes this token from its parent.
1314 </summary>
1315 </member>
1316 <member name="M:Newtonsoft.Json.Linq.JToken.Replace(Newtonsoft.Json.Linq.JToken)">
1317 <summary>
1318 Replaces this token with the specified token.
1319 </summary>
1320 <param name="value">The value.</param>
1321 </member>
1322 <member name="M:Newtonsoft.Json.Linq.JToken.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
1323 <summary>
1324 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
1325 </summary>
1326 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
1327 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
1328 </member>
1329 <member name="M:Newtonsoft.Json.Linq.JToken.ToString">
1330 <summary>
1331 Returns the indented JSON for this token.
1332 </summary>
1333 <returns>
1334 The indented JSON for this token.
1335 </returns>
1336 </member>
1337 <member name="M:Newtonsoft.Json.Linq.JToken.ToString(Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])">
1338 <summary>
1339 Returns the JSON for this token using the given formatting and converters.
1340 </summary>
1341 <param name="formatting">Indicates how the output is formatted.</param>
1342 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
1343 <returns>The JSON for this token using the given formatting and converters.</returns>
1344 </member>
1345 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Boolean">
1346 <summary>
1347 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Boolean"/>.
1348 </summary>
1349 <param name="value">The value.</param>
1350 <returns>The result of the conversion.</returns>
1351 </member>
1352 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Boolean}">
1353 <summary>
1354 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1355 </summary>
1356 <param name="value">The value.</param>
1357 <returns>The result of the conversion.</returns>
1358 </member>
1359 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int64">
1360 <summary>
1361 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int64"/>.
1362 </summary>
1363 <param name="value">The value.</param>
1364 <returns>The result of the conversion.</returns>
1365 </member>
1366 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.DateTime}">
1367 <summary>
1368 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1369 </summary>
1370 <param name="value">The value.</param>
1371 <returns>The result of the conversion.</returns>
1372 </member>
1373 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Decimal}">
1374 <summary>
1375 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1376 </summary>
1377 <param name="value">The value.</param>
1378 <returns>The result of the conversion.</returns>
1379 </member>
1380 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Double}">
1381 <summary>
1382 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1383 </summary>
1384 <param name="value">The value.</param>
1385 <returns>The result of the conversion.</returns>
1386 </member>
1387 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Int32">
1388 <summary>
1389 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Int32"/>.
1390 </summary>
1391 <param name="value">The value.</param>
1392 <returns>The result of the conversion.</returns>
1393 </member>
1394 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int32}">
1395 <summary>
1396 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1397 </summary>
1398 <param name="value">The value.</param>
1399 <returns>The result of the conversion.</returns>
1400 </member>
1401 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.DateTime">
1402 <summary>
1403 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.DateTime"/>.
1404 </summary>
1405 <param name="value">The value.</param>
1406 <returns>The result of the conversion.</returns>
1407 </member>
1408 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Int64}">
1409 <summary>
1410 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1411 </summary>
1412 <param name="value">The value.</param>
1413 <returns>The result of the conversion.</returns>
1414 </member>
1415 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.Single}">
1416 <summary>
1417 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1418 </summary>
1419 <param name="value">The value.</param>
1420 <returns>The result of the conversion.</returns>
1421 </member>
1422 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Decimal">
1423 <summary>
1424 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Decimal"/>.
1425 </summary>
1426 <param name="value">The value.</param>
1427 <returns>The result of the conversion.</returns>
1428 </member>
1429 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt32}">
1430 <summary>
1431 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1432 </summary>
1433 <param name="value">The value.</param>
1434 <returns>The result of the conversion.</returns>
1435 </member>
1436 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Nullable{System.UInt64}">
1437 <summary>
1438 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Nullable`1"/>.
1439 </summary>
1440 <param name="value">The value.</param>
1441 <returns>The result of the conversion.</returns>
1442 </member>
1443 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Double">
1444 <summary>
1445 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Double"/>.
1446 </summary>
1447 <param name="value">The value.</param>
1448 <returns>The result of the conversion.</returns>
1449 </member>
1450 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Single">
1451 <summary>
1452 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Single"/>.
1453 </summary>
1454 <param name="value">The value.</param>
1455 <returns>The result of the conversion.</returns>
1456 </member>
1457 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.String">
1458 <summary>
1459 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.String"/>.
1460 </summary>
1461 <param name="value">The value.</param>
1462 <returns>The result of the conversion.</returns>
1463 </member>
1464 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt32">
1465 <summary>
1466 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt32"/>.
1467 </summary>
1468 <param name="value">The value.</param>
1469 <returns>The result of the conversion.</returns>
1470 </member>
1471 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.UInt64">
1472 <summary>
1473 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.UInt64"/>.
1474 </summary>
1475 <param name="value">The value.</param>
1476 <returns>The result of the conversion.</returns>
1477 </member>
1478 <member name="M:Newtonsoft.Json.Linq.JToken.op_Explicit(Newtonsoft.Json.Linq.JToken)~System.Byte[]">
1479 <summary>
1480 Performs an explicit conversion from <see cref="T:Newtonsoft.Json.Linq.JToken"/> to <see cref="T:System.Byte[]"/>.
1481 </summary>
1482 <param name="value">The value.</param>
1483 <returns>The result of the conversion.</returns>
1484 </member>
1485 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Boolean)~Newtonsoft.Json.Linq.JToken">
1486 <summary>
1487 Performs an implicit conversion from <see cref="T:System.Boolean"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1488 </summary>
1489 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1490 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1491 </member>
1492 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Boolean})~Newtonsoft.Json.Linq.JToken">
1493 <summary>
1494 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1495 </summary>
1496 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1497 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1498 </member>
1499 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int64)~Newtonsoft.Json.Linq.JToken">
1500 <summary>
1501 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1502 </summary>
1503 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1504 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1505 </member>
1506 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.DateTime})~Newtonsoft.Json.Linq.JToken">
1507 <summary>
1508 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1509 </summary>
1510 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1511 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1512 </member>
1513 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Decimal})~Newtonsoft.Json.Linq.JToken">
1514 <summary>
1515 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1516 </summary>
1517 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1518 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1519 </member>
1520 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Double})~Newtonsoft.Json.Linq.JToken">
1521 <summary>
1522 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1523 </summary>
1524 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1525 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1526 </member>
1527 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt16)~Newtonsoft.Json.Linq.JToken">
1528 <summary>
1529 Performs an implicit conversion from <see cref="T:System.UInt16"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1530 </summary>
1531 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1532 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1533 </member>
1534 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Int32)~Newtonsoft.Json.Linq.JToken">
1535 <summary>
1536 Performs an implicit conversion from <see cref="T:System.Int32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1537 </summary>
1538 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1539 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1540 </member>
1541 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int32})~Newtonsoft.Json.Linq.JToken">
1542 <summary>
1543 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1544 </summary>
1545 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1546 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1547 </member>
1548 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.DateTime)~Newtonsoft.Json.Linq.JToken">
1549 <summary>
1550 Performs an implicit conversion from <see cref="T:System.DateTime"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1551 </summary>
1552 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1553 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1554 </member>
1555 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Int64})~Newtonsoft.Json.Linq.JToken">
1556 <summary>
1557 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1558 </summary>
1559 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1560 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1561 </member>
1562 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.Single})~Newtonsoft.Json.Linq.JToken">
1563 <summary>
1564 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1565 </summary>
1566 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1567 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1568 </member>
1569 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Decimal)~Newtonsoft.Json.Linq.JToken">
1570 <summary>
1571 Performs an implicit conversion from <see cref="T:System.Decimal"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1572 </summary>
1573 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1574 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1575 </member>
1576 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt16})~Newtonsoft.Json.Linq.JToken">
1577 <summary>
1578 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1579 </summary>
1580 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1581 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1582 </member>
1583 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt32})~Newtonsoft.Json.Linq.JToken">
1584 <summary>
1585 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1586 </summary>
1587 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1588 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1589 </member>
1590 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Nullable{System.UInt64})~Newtonsoft.Json.Linq.JToken">
1591 <summary>
1592 Performs an implicit conversion from <see cref="T:System.Nullable`1"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1593 </summary>
1594 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1595 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1596 </member>
1597 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Double)~Newtonsoft.Json.Linq.JToken">
1598 <summary>
1599 Performs an implicit conversion from <see cref="T:System.Double"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1600 </summary>
1601 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1602 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1603 </member>
1604 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Single)~Newtonsoft.Json.Linq.JToken">
1605 <summary>
1606 Performs an implicit conversion from <see cref="T:System.Single"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1607 </summary>
1608 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1609 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1610 </member>
1611 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.String)~Newtonsoft.Json.Linq.JToken">
1612 <summary>
1613 Performs an implicit conversion from <see cref="T:System.String"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1614 </summary>
1615 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1616 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1617 </member>
1618 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt32)~Newtonsoft.Json.Linq.JToken">
1619 <summary>
1620 Performs an implicit conversion from <see cref="T:System.UInt32"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1621 </summary>
1622 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1623 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1624 </member>
1625 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.UInt64)~Newtonsoft.Json.Linq.JToken">
1626 <summary>
1627 Performs an implicit conversion from <see cref="T:System.UInt64"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1628 </summary>
1629 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1630 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1631 </member>
1632 <member name="M:Newtonsoft.Json.Linq.JToken.op_Implicit(System.Byte[])~Newtonsoft.Json.Linq.JToken">
1633 <summary>
1634 Performs an implicit conversion from <see cref="T:System.Byte[]"/> to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1635 </summary>
1636 <param name="value">The value to create a <see cref="T:Newtonsoft.Json.Linq.JValue"/> from.</param>
1637 <returns>The <see cref="T:Newtonsoft.Json.Linq.JValue"/> initialized with the specified value.</returns>
1638 </member>
1639 <member name="M:Newtonsoft.Json.Linq.JToken.CreateReader">
1640 <summary>
1641 Creates an <see cref="T:Newtonsoft.Json.JsonReader"/> for this token.
1642 </summary>
1643 <returns>An <see cref="T:Newtonsoft.Json.JsonReader"/> that can be used to read this token and its descendants.</returns>
1644 </member>
1645 <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object)">
1646 <summary>
1647 Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object.
1648 </summary>
1649 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
1650 <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object</returns>
1651 </member>
1652 <member name="M:Newtonsoft.Json.Linq.JToken.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
1653 <summary>
1654 Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from an object using the specified <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
1655 </summary>
1656 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
1657 <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used when reading the object.</param>
1658 <returns>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the value of the specified object</returns>
1659 </member>
1660 <member name="M:Newtonsoft.Json.Linq.JToken.ReadFrom(Newtonsoft.Json.JsonReader)">
1661 <summary>
1662 Creates a <see cref="T:Newtonsoft.Json.Linq.JToken"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
1663 </summary>
1664 <param name="reader">An <see cref="T:Newtonsoft.Json.JsonReader"/> positioned at the token to read into this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
1665 <returns>
1666 An <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the token and its descendant tokens
1667 that were read from the reader. The runtime type of the token is determined
1668 by the token type of the first token encountered in the reader.
1669 </returns>
1670 </member>
1671 <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String)">
1672 <summary>
1673 Selects the token that matches the object path.
1674 </summary>
1675 <param name="path">
1676 The object path from the current <see cref="T:Newtonsoft.Json.Linq.JToken"/> to the <see cref="T:Newtonsoft.Json.Linq.JToken"/>
1677 to be returned. This must be a string of property names or array indexes separated
1678 by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
1679 <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
1680 </param>
1681 <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that matches the object path or a null reference if no matching token is found.</returns>
1682 </member>
1683 <member name="M:Newtonsoft.Json.Linq.JToken.SelectToken(System.String,System.Boolean)">
1684 <summary>
1685 Selects the token that matches the object path.
1686 </summary>
1687 <param name="path">
1688 The object path from the current <see cref="T:Newtonsoft.Json.Linq.JToken"/> to the <see cref="T:Newtonsoft.Json.Linq.JToken"/>
1689 to be returned. This must be a string of property names or array indexes separated
1690 by periods, such as <code>Tables[0].DefaultView[0].Price</code> in C# or
1691 <code>Tables(0).DefaultView(0).Price</code> in Visual Basic.
1692 </param>
1693 <param name="errorWhenNoMatch">A flag to indicate whether an error should be thrown if no token is found.</param>
1694 <returns>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that matches the object path.</returns>
1695 </member>
1696 <member name="P:Newtonsoft.Json.Linq.JToken.EqualityComparer">
1697 <summary>
1698 Gets a comparer that can compare two tokens for value equality.
1699 </summary>
1700 <value>A <see cref="T:Newtonsoft.Json.Linq.JTokenEqualityComparer"/> that can compare two nodes for value equality.</value>
1701 </member>
1702 <member name="P:Newtonsoft.Json.Linq.JToken.Parent">
1703 <summary>
1704 Gets or sets the parent.
1705 </summary>
1706 <value>The parent.</value>
1707 </member>
1708 <member name="P:Newtonsoft.Json.Linq.JToken.Root">
1709 <summary>
1710 Gets the root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1711 </summary>
1712 <value>The root <see cref="T:Newtonsoft.Json.Linq.JToken"/> of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
1713 </member>
1714 <member name="P:Newtonsoft.Json.Linq.JToken.Type">
1715 <summary>
1716 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1717 </summary>
1718 <value>The type.</value>
1719 </member>
1720 <member name="P:Newtonsoft.Json.Linq.JToken.HasValues">
1721 <summary>
1722 Gets a value indicating whether this token has childen tokens.
1723 </summary>
1724 <value>
1725 <c>true</c> if this token has child values; otherwise, <c>false</c>.
1726 </value>
1727 </member>
1728 <member name="P:Newtonsoft.Json.Linq.JToken.Next">
1729 <summary>
1730 Gets the next sibling token of this node.
1731 </summary>
1732 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the next sibling token.</value>
1733 </member>
1734 <member name="P:Newtonsoft.Json.Linq.JToken.Previous">
1735 <summary>
1736 Gets the previous sibling token of this node.
1737 </summary>
1738 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the previous sibling token.</value>
1739 </member>
1740 <member name="P:Newtonsoft.Json.Linq.JToken.Item(System.Object)">
1741 <summary>
1742 Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
1743 </summary>
1744 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
1745 </member>
1746 <member name="P:Newtonsoft.Json.Linq.JToken.First">
1747 <summary>
1748 Get the first child token of this token.
1749 </summary>
1750 <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
1751 </member>
1752 <member name="P:Newtonsoft.Json.Linq.JToken.Last">
1753 <summary>
1754 Get the last child token of this token.
1755 </summary>
1756 <value>A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</value>
1757 </member>
1758 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(Newtonsoft.Json.Linq.JValue)">
1759 <summary>
1760 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class from another <see cref="T:Newtonsoft.Json.Linq.JValue"/> object.
1761 </summary>
1762 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JValue"/> object to copy from.</param>
1763 </member>
1764 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Int64)">
1765 <summary>
1766 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1767 </summary>
1768 <param name="value">The value.</param>
1769 </member>
1770 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.UInt64)">
1771 <summary>
1772 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1773 </summary>
1774 <param name="value">The value.</param>
1775 </member>
1776 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Double)">
1777 <summary>
1778 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1779 </summary>
1780 <param name="value">The value.</param>
1781 </member>
1782 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.DateTime)">
1783 <summary>
1784 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1785 </summary>
1786 <param name="value">The value.</param>
1787 </member>
1788 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Boolean)">
1789 <summary>
1790 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1791 </summary>
1792 <param name="value">The value.</param>
1793 </member>
1794 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.String)">
1795 <summary>
1796 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1797 </summary>
1798 <param name="value">The value.</param>
1799 </member>
1800 <member name="M:Newtonsoft.Json.Linq.JValue.#ctor(System.Object)">
1801 <summary>
1802 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JValue"/> class with the given value.
1803 </summary>
1804 <param name="value">The value.</param>
1805 </member>
1806 <member name="M:Newtonsoft.Json.Linq.JValue.CreateComment(System.String)">
1807 <summary>
1808 Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value.
1809 </summary>
1810 <param name="value">The value.</param>
1811 <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> comment with the given value.</returns>
1812 </member>
1813 <member name="M:Newtonsoft.Json.Linq.JValue.CreateString(System.String)">
1814 <summary>
1815 Creates a <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value.
1816 </summary>
1817 <param name="value">The value.</param>
1818 <returns>A <see cref="T:Newtonsoft.Json.Linq.JValue"/> string with the given value.</returns>
1819 </member>
1820 <member name="M:Newtonsoft.Json.Linq.JValue.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
1821 <summary>
1822 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
1823 </summary>
1824 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
1825 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
1826 </member>
1827 <member name="M:Newtonsoft.Json.Linq.JValue.Equals(Newtonsoft.Json.Linq.JValue)">
1828 <summary>
1829 Indicates whether the current object is equal to another object of the same type.
1830 </summary>
1831 <returns>
1832 true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
1833 </returns>
1834 <param name="other">An object to compare with this object.</param>
1835 </member>
1836 <member name="M:Newtonsoft.Json.Linq.JValue.Equals(System.Object)">
1837 <summary>
1838 Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
1839 </summary>
1840 <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
1841 <returns>
1842 true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false.
1843 </returns>
1844 <exception cref="T:System.NullReferenceException">
1845 The <paramref name="obj"/> parameter is null.
1846 </exception>
1847 </member>
1848 <member name="M:Newtonsoft.Json.Linq.JValue.GetHashCode">
1849 <summary>
1850 Serves as a hash function for a particular type.
1851 </summary>
1852 <returns>
1853 A hash code for the current <see cref="T:System.Object"/>.
1854 </returns>
1855 </member>
1856 <member name="P:Newtonsoft.Json.Linq.JValue.HasValues">
1857 <summary>
1858 Gets a value indicating whether this token has childen tokens.
1859 </summary>
1860 <value>
1861 <c>true</c> if this token has child values; otherwise, <c>false</c>.
1862 </value>
1863 </member>
1864 <member name="P:Newtonsoft.Json.Linq.JValue.Type">
1865 <summary>
1866 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
1867 </summary>
1868 <value>The type.</value>
1869 </member>
1870 <member name="P:Newtonsoft.Json.Linq.JValue.Value">
1871 <summary>
1872 Gets or sets the underlying token value.
1873 </summary>
1874 <value>The underlying token value.</value>
1875 </member>
1876 <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(Newtonsoft.Json.Linq.JRaw)">
1877 <summary>
1878 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class from another <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object.
1879 </summary>
1880 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JRaw"/> object to copy from.</param>
1881 </member>
1882 <member name="M:Newtonsoft.Json.Linq.JRaw.#ctor(System.String)">
1883 <summary>
1884 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JRaw"/> class.
1885 </summary>
1886 <param name="rawJson">The raw json.</param>
1887 </member>
1888 <member name="M:Newtonsoft.Json.Linq.JRaw.Create(Newtonsoft.Json.JsonReader)">
1889 <summary>
1890 Creates an instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.
1891 </summary>
1892 <param name="reader">The reader.</param>
1893 <returns>An instance of <see cref="T:Newtonsoft.Json.Linq.JRaw"/> with the content of the reader's current token.</returns>
1894 </member>
1895 <member name="T:Newtonsoft.Json.Required">
1896 <summary>
1897 Indicating whether a property is required.
1898 </summary>
1899 </member>
1900 <member name="F:Newtonsoft.Json.Required.Default">
1901 <summary>
1902 The property is not required. The default state.
1903 </summary>
1904 </member>
1905 <member name="F:Newtonsoft.Json.Required.AllowNull">
1906 <summary>
1907 The property must be defined in JSON but can be a null value.
1908 </summary>
1909 </member>
1910 <member name="F:Newtonsoft.Json.Required.Always">
1911 <summary>
1912 The property must be defined in JSON and cannot be a null value.
1913 </summary>
1914 </member>
1915 <member name="T:Newtonsoft.Json.Serialization.IReferenceResolver">
1916 <summary>
1917 Used to resolve references when serializing and deserializing JSON by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
1918 </summary>
1919 </member>
1920 <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.ResolveReference(System.String)">
1921 <summary>
1922 Resolves a reference to its object.
1923 </summary>
1924 <param name="reference">The reference to resolve.</param>
1925 <returns>The object that</returns>
1926 </member>
1927 <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.GetReference(System.Object)">
1928 <summary>
1929 Gets the reference for the sepecified object.
1930 </summary>
1931 <param name="value">The object to get a reference for.</param>
1932 <returns>The reference to the object.</returns>
1933 </member>
1934 <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.IsReferenced(System.Object)">
1935 <summary>
1936 Determines whether the specified object is referenced.
1937 </summary>
1938 <param name="value">The object to test for a reference.</param>
1939 <returns>
1940 <c>true</c> if the specified object is referenced; otherwise, <c>false</c>.
1941 </returns>
1942 </member>
1943 <member name="M:Newtonsoft.Json.Serialization.IReferenceResolver.AddReference(System.String,System.Object)">
1944 <summary>
1945 Adds a reference to the specified object.
1946 </summary>
1947 <param name="reference">The reference.</param>
1948 <param name="value">The object to reference.</param>
1949 </member>
1950 <member name="T:Newtonsoft.Json.PreserveReferencesHandling">
1951 <summary>
1952 Specifies reference handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
1953 </summary>
1954 </member>
1955 <member name="F:Newtonsoft.Json.PreserveReferencesHandling.None">
1956 <summary>
1957 Do not preserve references when serializing types.
1958 </summary>
1959 </member>
1960 <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Objects">
1961 <summary>
1962 Preserve references when serializing into a JSON object structure.
1963 </summary>
1964 </member>
1965 <member name="F:Newtonsoft.Json.PreserveReferencesHandling.Arrays">
1966 <summary>
1967 Preserve references when serializing into a JSON array structure.
1968 </summary>
1969 </member>
1970 <member name="F:Newtonsoft.Json.PreserveReferencesHandling.All">
1971 <summary>
1972 Preserve references when serializing.
1973 </summary>
1974 </member>
1975 <member name="T:Newtonsoft.Json.JsonArrayAttribute">
1976 <summary>
1977 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the collection.
1978 </summary>
1979 </member>
1980 <member name="T:Newtonsoft.Json.JsonContainerAttribute">
1981 <summary>
1982 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object.
1983 </summary>
1984 </member>
1985 <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor">
1986 <summary>
1987 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class.
1988 </summary>
1989 </member>
1990 <member name="M:Newtonsoft.Json.JsonContainerAttribute.#ctor(System.String)">
1991 <summary>
1992 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonContainerAttribute"/> class with the specified container Id.
1993 </summary>
1994 <param name="id">The container Id.</param>
1995 </member>
1996 <member name="P:Newtonsoft.Json.JsonContainerAttribute.Id">
1997 <summary>
1998 Gets or sets the id.
1999 </summary>
2000 <value>The id.</value>
2001 </member>
2002 <member name="P:Newtonsoft.Json.JsonContainerAttribute.Title">
2003 <summary>
2004 Gets or sets the title.
2005 </summary>
2006 <value>The title.</value>
2007 </member>
2008 <member name="P:Newtonsoft.Json.JsonContainerAttribute.Description">
2009 <summary>
2010 Gets or sets the description.
2011 </summary>
2012 <value>The description.</value>
2013 </member>
2014 <member name="P:Newtonsoft.Json.JsonContainerAttribute.IsReference">
2015 <summary>
2016 Gets or sets a value that indicates whether to preserve object reference data.
2017 </summary>
2018 <value>
2019 <c>true</c> to keep object reference; otherwise, <c>false</c>. The default is <c>false</c>.
2020 </value>
2021 </member>
2022 <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor">
2023 <summary>
2024 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class.
2025 </summary>
2026 </member>
2027 <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.Boolean)">
2028 <summary>
2029 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with a flag indicating whether the array can contain null items
2030 </summary>
2031 <param name="allowNullItems">A flag indicating whether the array can contain null items.</param>
2032 </member>
2033 <member name="M:Newtonsoft.Json.JsonArrayAttribute.#ctor(System.String)">
2034 <summary>
2035 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonArrayAttribute"/> class with the specified container Id.
2036 </summary>
2037 <param name="id">The container Id.</param>
2038 </member>
2039 <member name="P:Newtonsoft.Json.JsonArrayAttribute.AllowNullItems">
2040 <summary>
2041 Gets or sets a value indicating whether null items are allowed in the collection.
2042 </summary>
2043 <value><c>true</c> if null items are allowed in the collection; otherwise, <c>false</c>.</value>
2044 </member>
2045 <member name="T:Newtonsoft.Json.DefaultValueHandling">
2046 <summary>
2047 Specifies default value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
2048 </summary>
2049 </member>
2050 <member name="F:Newtonsoft.Json.DefaultValueHandling.Include">
2051 <summary>
2052 Include null values when serializing and deserializing objects.
2053 </summary>
2054 </member>
2055 <member name="F:Newtonsoft.Json.DefaultValueHandling.Ignore">
2056 <summary>
2057 Ignore null values when serializing and deserializing objects.
2058 </summary>
2059 </member>
2060 <member name="T:Newtonsoft.Json.JsonConverterAttribute">
2061 <summary>
2062 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to use the specified <see cref="T:Newtonsoft.Json.JsonConverter"/> when serializing the member or class.
2063 </summary>
2064 </member>
2065 <member name="M:Newtonsoft.Json.JsonConverterAttribute.#ctor(System.Type)">
2066 <summary>
2067 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonConverterAttribute"/> class.
2068 </summary>
2069 <param name="converterType">Type of the converter.</param>
2070 </member>
2071 <member name="P:Newtonsoft.Json.JsonConverterAttribute.ConverterType">
2072 <summary>
2073 Gets the type of the converter.
2074 </summary>
2075 <value>The type of the converter.</value>
2076 </member>
2077 <member name="T:Newtonsoft.Json.JsonObjectAttribute">
2078 <summary>
2079 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> how to serialize the object.
2080 </summary>
2081 </member>
2082 <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor">
2083 <summary>
2084 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class.
2085 </summary>
2086 </member>
2087 <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(Newtonsoft.Json.MemberSerialization)">
2088 <summary>
2089 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified member serialization.
2090 </summary>
2091 <param name="memberSerialization">The member serialization.</param>
2092 </member>
2093 <member name="M:Newtonsoft.Json.JsonObjectAttribute.#ctor(System.String)">
2094 <summary>
2095 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonObjectAttribute"/> class with the specified container Id.
2096 </summary>
2097 <param name="id">The container Id.</param>
2098 </member>
2099 <member name="P:Newtonsoft.Json.JsonObjectAttribute.MemberSerialization">
2100 <summary>
2101 Gets or sets the member serialization.
2102 </summary>
2103 <value>The member serialization.</value>
2104 </member>
2105 <member name="T:Newtonsoft.Json.JsonSerializerSettings">
2106 <summary>
2107 Specifies the settings on a <see cref="T:Newtonsoft.Json.JsonSerializer"/> object.
2108 </summary>
2109 </member>
2110 <member name="M:Newtonsoft.Json.JsonSerializerSettings.#ctor">
2111 <summary>
2112 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> class.
2113 </summary>
2114 </member>
2115 <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceLoopHandling">
2116 <summary>
2117 Gets or sets how reference loops (e.g. a class referencing itself) is handled.
2118 </summary>
2119 <value>Reference loop handling.</value>
2120 </member>
2121 <member name="P:Newtonsoft.Json.JsonSerializerSettings.MissingMemberHandling">
2122 <summary>
2123 Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
2124 </summary>
2125 <value>Missing member handling.</value>
2126 </member>
2127 <member name="P:Newtonsoft.Json.JsonSerializerSettings.ObjectCreationHandling">
2128 <summary>
2129 Gets or sets how objects are created during deserialization.
2130 </summary>
2131 <value>The object creation handling.</value>
2132 </member>
2133 <member name="P:Newtonsoft.Json.JsonSerializerSettings.NullValueHandling">
2134 <summary>
2135 Gets or sets how null values are handled during serialization and deserialization.
2136 </summary>
2137 <value>Null value handling.</value>
2138 </member>
2139 <member name="P:Newtonsoft.Json.JsonSerializerSettings.DefaultValueHandling">
2140 <summary>
2141 Gets or sets how null default are handled during serialization and deserialization.
2142 </summary>
2143 <value>The default value handling.</value>
2144 </member>
2145 <member name="P:Newtonsoft.Json.JsonSerializerSettings.Converters">
2146 <summary>
2147 Gets or sets a collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.
2148 </summary>
2149 <value>The converters.</value>
2150 </member>
2151 <member name="P:Newtonsoft.Json.JsonSerializerSettings.PreserveReferencesHandling">
2152 <summary>
2153 Gets or sets how object references are preserved by the serializer.
2154 </summary>
2155 <value>The preserve references handling.</value>
2156 </member>
2157 <member name="P:Newtonsoft.Json.JsonSerializerSettings.TypeNameHandling">
2158 <summary>
2159 Gets or sets how type name writing and reading is handled by the serializer.
2160 </summary>
2161 <value>The type name handling.</value>
2162 </member>
2163 <member name="P:Newtonsoft.Json.JsonSerializerSettings.ConstructorHandling">
2164 <summary>
2165 Gets or sets how constructors are used during deserialization.
2166 </summary>
2167 <value>The constructor handling.</value>
2168 </member>
2169 <member name="P:Newtonsoft.Json.JsonSerializerSettings.ContractResolver">
2170 <summary>
2171 Gets or sets the contract resolver used by the serializer when
2172 serializing .NET objects to JSON and vice versa.
2173 </summary>
2174 <value>The contract resolver.</value>
2175 </member>
2176 <member name="P:Newtonsoft.Json.JsonSerializerSettings.ReferenceResolver">
2177 <summary>
2178 Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
2179 </summary>
2180 <value>The reference resolver.</value>
2181 </member>
2182 <member name="P:Newtonsoft.Json.JsonSerializerSettings.Binder">
2183 <summary>
2184 Gets or sets the <see cref="T:System.Runtime.Serialization.SerializationBinder"/> used by the serializer when resolving type names.
2185 </summary>
2186 <value>The binder.</value>
2187 </member>
2188 <member name="P:Newtonsoft.Json.JsonSerializerSettings.Error">
2189 <summary>
2190 Gets or sets the error handler called during serialization and deserialization.
2191 </summary>
2192 <value>The error handler called during serialization and deserialization.</value>
2193 </member>
2194 <member name="P:Newtonsoft.Json.JsonSerializerSettings.Context">
2195 <summary>
2196 Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods.
2197 </summary>
2198 <value>The context.</value>
2199 </member>
2200 <member name="T:Newtonsoft.Json.JsonValidatingReader">
2201 <summary>
2202 Represents a reader that provides <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> validation.
2203 </summary>
2204 </member>
2205 <member name="M:Newtonsoft.Json.JsonValidatingReader.#ctor(Newtonsoft.Json.JsonReader)">
2206 <summary>
2207 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonValidatingReader"/> class that
2208 validates the content returned from the given <see cref="T:Newtonsoft.Json.JsonReader"/>.
2209 </summary>
2210 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from while validating.</param>
2211 </member>
2212 <member name="M:Newtonsoft.Json.JsonValidatingReader.ReadAsBytes">
2213 <summary>
2214 Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
2215 </summary>
2216 <returns>
2217 A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
2218 </returns>
2219 </member>
2220 <member name="M:Newtonsoft.Json.JsonValidatingReader.Read">
2221 <summary>
2222 Reads the next JSON token from the stream.
2223 </summary>
2224 <returns>
2225 true if the next token was read successfully; false if there are no more tokens to read.
2226 </returns>
2227 </member>
2228 <member name="E:Newtonsoft.Json.JsonValidatingReader.ValidationEventHandler">
2229 <summary>
2230 Sets an event handler for receiving schema validation errors.
2231 </summary>
2232 </member>
2233 <member name="P:Newtonsoft.Json.JsonValidatingReader.Value">
2234 <summary>
2235 Gets the text value of the current Json token.
2236 </summary>
2237 <value></value>
2238 </member>
2239 <member name="P:Newtonsoft.Json.JsonValidatingReader.Depth">
2240 <summary>
2241 Gets the depth of the current token in the JSON document.
2242 </summary>
2243 <value>The depth of the current token in the JSON document.</value>
2244 </member>
2245 <member name="P:Newtonsoft.Json.JsonValidatingReader.QuoteChar">
2246 <summary>
2247 Gets the quotation mark character used to enclose the value of a string.
2248 </summary>
2249 <value></value>
2250 </member>
2251 <member name="P:Newtonsoft.Json.JsonValidatingReader.TokenType">
2252 <summary>
2253 Gets the type of the current Json token.
2254 </summary>
2255 <value></value>
2256 </member>
2257 <member name="P:Newtonsoft.Json.JsonValidatingReader.ValueType">
2258 <summary>
2259 Gets The Common Language Runtime (CLR) type for the current Json token.
2260 </summary>
2261 <value></value>
2262 </member>
2263 <member name="P:Newtonsoft.Json.JsonValidatingReader.Schema">
2264 <summary>
2265 Gets or sets the schema.
2266 </summary>
2267 <value>The schema.</value>
2268 </member>
2269 <member name="P:Newtonsoft.Json.JsonValidatingReader.Reader">
2270 <summary>
2271 Gets the <see cref="T:Newtonsoft.Json.JsonReader"/> used to construct this <see cref="T:Newtonsoft.Json.JsonValidatingReader"/>.
2272 </summary>
2273 <value>The <see cref="T:Newtonsoft.Json.JsonReader"/> specified in the constructor.</value>
2274 </member>
2275 <member name="T:Newtonsoft.Json.Linq.JTokenEqualityComparer">
2276 <summary>
2277 Compares tokens to determine whether they are equal.
2278 </summary>
2279 </member>
2280 <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.Equals(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken)">
2281 <summary>
2282 Determines whether the specified objects are equal.
2283 </summary>
2284 <param name="x">The first object of type <paramref name="T"/> to compare.</param>
2285 <param name="y">The second object of type <paramref name="T"/> to compare.</param>
2286 <returns>
2287 true if the specified objects are equal; otherwise, false.
2288 </returns>
2289 </member>
2290 <member name="M:Newtonsoft.Json.Linq.JTokenEqualityComparer.GetHashCode(Newtonsoft.Json.Linq.JToken)">
2291 <summary>
2292 Returns a hash code for the specified object.
2293 </summary>
2294 <param name="obj">The <see cref="T:System.Object"/> for which a hash code is to be returned.</param>
2295 <returns>A hash code for the specified object.</returns>
2296 <exception cref="T:System.ArgumentNullException">The type of <paramref name="obj"/> is a reference type and <paramref name="obj"/> is null.</exception>
2297 </member>
2298 <member name="T:Newtonsoft.Json.MemberSerialization">
2299 <summary>
2300 Specifies the member serialization options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
2301 </summary>
2302 </member>
2303 <member name="F:Newtonsoft.Json.MemberSerialization.OptOut">
2304 <summary>
2305 All members are serialized by default. Members can be excluded using the <see cref="T:Newtonsoft.Json.JsonIgnoreAttribute"/>.
2306 </summary>
2307 </member>
2308 <member name="F:Newtonsoft.Json.MemberSerialization.OptIn">
2309 <summary>
2310 Only members must be marked with the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> are serialized.
2311 </summary>
2312 </member>
2313 <member name="T:Newtonsoft.Json.ObjectCreationHandling">
2314 <summary>
2315 Specifies how object creation is handled by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
2316 </summary>
2317 </member>
2318 <member name="F:Newtonsoft.Json.ObjectCreationHandling.Auto">
2319 <summary>
2320 Reuse existing objects, create new objects when needed.
2321 </summary>
2322 </member>
2323 <member name="F:Newtonsoft.Json.ObjectCreationHandling.Reuse">
2324 <summary>
2325 Only reuse existing objects.
2326 </summary>
2327 </member>
2328 <member name="F:Newtonsoft.Json.ObjectCreationHandling.Replace">
2329 <summary>
2330 Always create new objects.
2331 </summary>
2332 </member>
2333 <member name="T:Newtonsoft.Json.Converters.IsoDateTimeConverter">
2334 <summary>
2335 Converts a <see cref="T:System.DateTime"/> to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z).
2336 </summary>
2337 </member>
2338 <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
2339 <summary>
2340 Writes the JSON representation of the object.
2341 </summary>
2342 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
2343 <param name="value">The value.</param>
2344 <param name="serializer">The calling serializer.</param>
2345 </member>
2346 <member name="M:Newtonsoft.Json.Converters.IsoDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
2347 <summary>
2348 Reads the JSON representation of the object.
2349 </summary>
2350 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
2351 <param name="objectType">Type of the object.</param>
2352 <param name="serializer">The calling serializer.</param>
2353 <returns>The object value.</returns>
2354 </member>
2355 <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeStyles">
2356 <summary>
2357 Gets or sets the date time styles used when converting a date to and from JSON.
2358 </summary>
2359 <value>The date time styles used when converting a date to and from JSON.</value>
2360 </member>
2361 <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.DateTimeFormat">
2362 <summary>
2363 Gets or sets the date time format used when converting a date to and from JSON.
2364 </summary>
2365 <value>The date time format used when converting a date to and from JSON.</value>
2366 </member>
2367 <member name="P:Newtonsoft.Json.Converters.IsoDateTimeConverter.Culture">
2368 <summary>
2369 Gets or sets the culture used when converting a date to and from JSON.
2370 </summary>
2371 <value>The culture used when converting a date to and from JSON.</value>
2372 </member>
2373 <member name="T:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter">
2374 <summary>
2375 Converts a <see cref="T:System.DateTime"/> to and from a JavaScript date constructor (e.g. new Date(52231943)).
2376 </summary>
2377 </member>
2378 <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
2379 <summary>
2380 Writes the JSON representation of the object.
2381 </summary>
2382 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
2383 <param name="value">The value.</param>
2384 <param name="serializer">The calling serializer.</param>
2385 </member>
2386 <member name="M:Newtonsoft.Json.Converters.JavaScriptDateTimeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
2387 <summary>
2388 Reads the JSON representation of the object.
2389 </summary>
2390 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
2391 <param name="objectType">Type of the object.</param>
2392 <param name="serializer">The calling serializer.</param>
2393 <returns>The object value.</returns>
2394 </member>
2395 <member name="T:Newtonsoft.Json.Converters.JsonDateTimeSerializationMode">
2396 <summary>
2397 Specifies whether a DateTime object represents a local time, a Coordinated Universal Time (UTC), or is not specified as either local time or UTC.
2398 </summary>
2399 </member>
2400 <member name="F:Newtonsoft.Json.Converters.JsonDateTimeSerializationMode.Local">
2401 <summary>
2402 The time represented is local time.
2403 </summary>
2404 </member>
2405 <member name="F:Newtonsoft.Json.Converters.JsonDateTimeSerializationMode.Utc">
2406 <summary>
2407 The time represented is UTC.
2408 </summary>
2409 </member>
2410 <member name="F:Newtonsoft.Json.Converters.JsonDateTimeSerializationMode.Unspecified">
2411 <summary>
2412 The time represented is not specified as either local time or Coordinated Universal Time (UTC).
2413 </summary>
2414 </member>
2415 <member name="F:Newtonsoft.Json.Converters.JsonDateTimeSerializationMode.RoundtripKind">
2416 <summary>
2417 Preserves the DateTimeKind field of a date when a DateTime object is converted to a string and the string is then converted back to a DateTime object.
2418 </summary>
2419 </member>
2420 <member name="T:Newtonsoft.Json.Converters.XmlNodeConverter">
2421 <summary>
2422 Converts an <see cref="T:System.Xml.XmlNode"/> to and from JSON.
2423 </summary>
2424 </member>
2425 <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
2426 <summary>
2427 Writes the JSON representation of the object.
2428 </summary>
2429 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
2430 <param name="serializer">The calling serializer.</param>
2431 <param name="value">The value.</param>
2432 </member>
2433 <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
2434 <summary>
2435 Reads the JSON representation of the object.
2436 </summary>
2437 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
2438 <param name="objectType">Type of the object.</param>
2439 <param name="serializer">The calling serializer.</param>
2440 <returns>The object value.</returns>
2441 </member>
2442 <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.IsNamespaceAttribute(System.String,System.String@)">
2443 <summary>
2444 Checks if the attributeName is a namespace attribute.
2445 </summary>
2446 <param name="attributeName">Attribute name to test.</param>
2447 <param name="prefix">The attribute name prefix if it has one, otherwise an empty string.</param>
2448 <returns>True if attribute name is for a namespace attribute, otherwise false.</returns>
2449 </member>
2450 <member name="M:Newtonsoft.Json.Converters.XmlNodeConverter.CanConvert(System.Type)">
2451 <summary>
2452 Determines whether this instance can convert the specified value type.
2453 </summary>
2454 <param name="valueType">Type of the value.</param>
2455 <returns>
2456 <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
2457 </returns>
2458 </member>
2459 <member name="P:Newtonsoft.Json.Converters.XmlNodeConverter.DeserializeRootElementName">
2460 <summary>
2461 Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements.
2462 </summary>
2463 <value>The name of the deserialize root element.</value>
2464 </member>
2465 <member name="T:Newtonsoft.Json.Converters.HtmlColorConverter">
2466 <summary>
2467 Converts a <see cref="T:System.Drawing.Color"/> object to and from JSON.
2468 </summary>
2469 </member>
2470 <member name="M:Newtonsoft.Json.Converters.HtmlColorConverter.WriteJson(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.JsonSerializer)">
2471 <summary>
2472 Writes the JSON representation of the object.
2473 </summary>
2474 <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
2475 <param name="serializer">The calling serializer.</param>
2476 <param name="value">The value.</param>
2477 </member>
2478 <member name="M:Newtonsoft.Json.Converters.HtmlColorConverter.CanConvert(System.Type)">
2479 <summary>
2480 Determines whether this instance can convert the specified value type.
2481 </summary>
2482 <param name="valueType">Type of the value.</param>
2483 <returns>
2484 <c>true</c> if this instance can convert the specified value type; otherwise, <c>false</c>.
2485 </returns>
2486 </member>
2487 <member name="M:Newtonsoft.Json.Converters.HtmlColorConverter.ReadJson(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.JsonSerializer)">
2488 <summary>
2489 Reads the JSON representation of the object.
2490 </summary>
2491 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> to read from.</param>
2492 <param name="objectType">Type of the object.</param>
2493 <param name="serializer">The calling serializer.</param>
2494 <returns>The object value.</returns>
2495 </member>
2496 <member name="T:Newtonsoft.Json.JsonTextReader">
2497 <summary>
2498 Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
2499 </summary>
2500 </member>
2501 <member name="M:Newtonsoft.Json.JsonTextReader.#ctor(System.IO.TextReader)">
2502 <summary>
2503 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReader"/> class with the specified <see cref="T:System.IO.TextReader"/>.
2504 </summary>
2505 <param name="reader">The <c>TextReader</c> containing the XML data to read.</param>
2506 </member>
2507 <member name="M:Newtonsoft.Json.JsonTextReader.Read">
2508 <summary>
2509 Reads the next JSON token from the stream.
2510 </summary>
2511 <returns>
2512 true if the next token was read successfully; false if there are no more tokens to read.
2513 </returns>
2514 </member>
2515 <member name="M:Newtonsoft.Json.JsonTextReader.ReadAsBytes">
2516 <summary>
2517 Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
2518 </summary>
2519 <returns>
2520 A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
2521 </returns>
2522 </member>
2523 <member name="M:Newtonsoft.Json.JsonTextReader.Close">
2524 <summary>
2525 Changes the state to closed.
2526 </summary>
2527 </member>
2528 <member name="M:Newtonsoft.Json.JsonTextReader.HasLineInfo">
2529 <summary>
2530 Gets a value indicating whether the class can return line information.
2531 </summary>
2532 <returns>
2533 <c>true</c> if LineNumber and LinePosition can be provided; otherwise, <c>false</c>.
2534 </returns>
2535 </member>
2536 <member name="P:Newtonsoft.Json.JsonTextReader.LineNumber">
2537 <summary>
2538 Gets the current line number.
2539 </summary>
2540 <value>
2541 The current line number or 0 if no line information is available (for example, HasLineInfo returns false).
2542 </value>
2543 </member>
2544 <member name="P:Newtonsoft.Json.JsonTextReader.LinePosition">
2545 <summary>
2546 Gets the current line position.
2547 </summary>
2548 <value>
2549 The current line position or 0 if no line information is available (for example, HasLineInfo returns false).
2550 </value>
2551 </member>
2552 <member name="T:Newtonsoft.Json.JsonPropertyAttribute">
2553 <summary>
2554 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> to always serialize the member with the specified name.
2555 </summary>
2556 </member>
2557 <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor">
2558 <summary>
2559 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class.
2560 </summary>
2561 </member>
2562 <member name="M:Newtonsoft.Json.JsonPropertyAttribute.#ctor(System.String)">
2563 <summary>
2564 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonPropertyAttribute"/> class with the specified name.
2565 </summary>
2566 <param name="propertyName">Name of the property.</param>
2567 </member>
2568 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.NullValueHandling">
2569 <summary>
2570 Gets or sets the null value handling used when serializing this property.
2571 </summary>
2572 <value>The null value handling.</value>
2573 </member>
2574 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.DefaultValueHandling">
2575 <summary>
2576 Gets or sets the default value handling used when serializing this property.
2577 </summary>
2578 <value>The default value handling.</value>
2579 </member>
2580 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ReferenceLoopHandling">
2581 <summary>
2582 Gets or sets the reference loop handling used when serializing this property.
2583 </summary>
2584 <value>The reference loop handling.</value>
2585 </member>
2586 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.ObjectCreationHandling">
2587 <summary>
2588 Gets or sets the object creation handling used when deserializing this property.
2589 </summary>
2590 <value>The object creation handling.</value>
2591 </member>
2592 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.IsReference">
2593 <summary>
2594 Gets or sets whether this property's value is serialized as a reference.
2595 </summary>
2596 <value>Whether this property's value is serialized as a reference.</value>
2597 </member>
2598 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.PropertyName">
2599 <summary>
2600 Gets or sets the name of the property.
2601 </summary>
2602 <value>The name of the property.</value>
2603 </member>
2604 <member name="P:Newtonsoft.Json.JsonPropertyAttribute.Required">
2605 <summary>
2606 Gets or sets a value indicating whether this property is required.
2607 </summary>
2608 <value>
2609 A value indicating whether this property is required.
2610 </value>
2611 </member>
2612 <member name="T:Newtonsoft.Json.JsonIgnoreAttribute">
2613 <summary>
2614 Instructs the <see cref="T:Newtonsoft.Json.JsonSerializer"/> not to serialize the public field or public read/write property value.
2615 </summary>
2616 </member>
2617 <member name="T:Newtonsoft.Json.JsonTextWriter">
2618 <summary>
2619 Represents a writer that provides a fast, non-cached, forward-only way of generating Json data.
2620 </summary>
2621 </member>
2622 <member name="M:Newtonsoft.Json.JsonTextWriter.#ctor(System.IO.TextWriter)">
2623 <summary>
2624 Creates an instance of the <c>JsonWriter</c> class using the specified <see cref="T:System.IO.TextWriter"/>.
2625 </summary>
2626 <param name="textWriter">The <c>TextWriter</c> to write to.</param>
2627 </member>
2628 <member name="M:Newtonsoft.Json.JsonTextWriter.Flush">
2629 <summary>
2630 Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream.
2631 </summary>
2632 </member>
2633 <member name="M:Newtonsoft.Json.JsonTextWriter.Close">
2634 <summary>
2635 Closes this stream and the underlying stream.
2636 </summary>
2637 </member>
2638 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartObject">
2639 <summary>
2640 Writes the beginning of a Json object.
2641 </summary>
2642 </member>
2643 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartArray">
2644 <summary>
2645 Writes the beginning of a Json array.
2646 </summary>
2647 </member>
2648 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteStartConstructor(System.String)">
2649 <summary>
2650 Writes the start of a constructor with the given name.
2651 </summary>
2652 <param name="name">The name of the constructor.</param>
2653 </member>
2654 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteEnd(Newtonsoft.Json.JsonToken)">
2655 <summary>
2656 Writes the specified end token.
2657 </summary>
2658 <param name="token">The end token to write.</param>
2659 </member>
2660 <member name="M:Newtonsoft.Json.JsonTextWriter.WritePropertyName(System.String)">
2661 <summary>
2662 Writes the property name of a name/value pair on a Json object.
2663 </summary>
2664 <param name="name">The name of the property.</param>
2665 </member>
2666 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndent">
2667 <summary>
2668 Writes indent characters.
2669 </summary>
2670 </member>
2671 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValueDelimiter">
2672 <summary>
2673 Writes the JSON value delimiter.
2674 </summary>
2675 </member>
2676 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteIndentSpace">
2677 <summary>
2678 Writes an indent space.
2679 </summary>
2680 </member>
2681 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteNull">
2682 <summary>
2683 Writes a null value.
2684 </summary>
2685 </member>
2686 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteUndefined">
2687 <summary>
2688 Writes an undefined value.
2689 </summary>
2690 </member>
2691 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteRaw(System.String)">
2692 <summary>
2693 Writes raw JSON.
2694 </summary>
2695 <param name="json">The raw JSON to write.</param>
2696 </member>
2697 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.String)">
2698 <summary>
2699 Writes a <see cref="T:System.String"/> value.
2700 </summary>
2701 <param name="value">The <see cref="T:System.String"/> value to write.</param>
2702 </member>
2703 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int32)">
2704 <summary>
2705 Writes a <see cref="T:System.Int32"/> value.
2706 </summary>
2707 <param name="value">The <see cref="T:System.Int32"/> value to write.</param>
2708 </member>
2709 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt32)">
2710 <summary>
2711 Writes a <see cref="T:System.UInt32"/> value.
2712 </summary>
2713 <param name="value">The <see cref="T:System.UInt32"/> value to write.</param>
2714 </member>
2715 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int64)">
2716 <summary>
2717 Writes a <see cref="T:System.Int64"/> value.
2718 </summary>
2719 <param name="value">The <see cref="T:System.Int64"/> value to write.</param>
2720 </member>
2721 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt64)">
2722 <summary>
2723 Writes a <see cref="T:System.UInt64"/> value.
2724 </summary>
2725 <param name="value">The <see cref="T:System.UInt64"/> value to write.</param>
2726 </member>
2727 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Single)">
2728 <summary>
2729 Writes a <see cref="T:System.Single"/> value.
2730 </summary>
2731 <param name="value">The <see cref="T:System.Single"/> value to write.</param>
2732 </member>
2733 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Double)">
2734 <summary>
2735 Writes a <see cref="T:System.Double"/> value.
2736 </summary>
2737 <param name="value">The <see cref="T:System.Double"/> value to write.</param>
2738 </member>
2739 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Boolean)">
2740 <summary>
2741 Writes a <see cref="T:System.Boolean"/> value.
2742 </summary>
2743 <param name="value">The <see cref="T:System.Boolean"/> value to write.</param>
2744 </member>
2745 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Int16)">
2746 <summary>
2747 Writes a <see cref="T:System.Int16"/> value.
2748 </summary>
2749 <param name="value">The <see cref="T:System.Int16"/> value to write.</param>
2750 </member>
2751 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.UInt16)">
2752 <summary>
2753 Writes a <see cref="T:System.UInt16"/> value.
2754 </summary>
2755 <param name="value">The <see cref="T:System.UInt16"/> value to write.</param>
2756 </member>
2757 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Char)">
2758 <summary>
2759 Writes a <see cref="T:System.Char"/> value.
2760 </summary>
2761 <param name="value">The <see cref="T:System.Char"/> value to write.</param>
2762 </member>
2763 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte)">
2764 <summary>
2765 Writes a <see cref="T:System.Byte"/> value.
2766 </summary>
2767 <param name="value">The <see cref="T:System.Byte"/> value to write.</param>
2768 </member>
2769 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.SByte)">
2770 <summary>
2771 Writes a <see cref="T:System.SByte"/> value.
2772 </summary>
2773 <param name="value">The <see cref="T:System.SByte"/> value to write.</param>
2774 </member>
2775 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Decimal)">
2776 <summary>
2777 Writes a <see cref="T:System.Decimal"/> value.
2778 </summary>
2779 <param name="value">The <see cref="T:System.Decimal"/> value to write.</param>
2780 </member>
2781 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.DateTime)">
2782 <summary>
2783 Writes a <see cref="T:System.DateTime"/> value.
2784 </summary>
2785 <param name="value">The <see cref="T:System.DateTime"/> value to write.</param>
2786 </member>
2787 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteValue(System.Byte[])">
2788 <summary>
2789 Writes a <see cref="T:Byte[]"/> value.
2790 </summary>
2791 <param name="value">The <see cref="T:Byte[]"/> value to write.</param>
2792 </member>
2793 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteComment(System.String)">
2794 <summary>
2795 Writes out a comment <code>/*...*/</code> containing the specified text.
2796 </summary>
2797 <param name="text">Text to place inside the comment.</param>
2798 </member>
2799 <member name="M:Newtonsoft.Json.JsonTextWriter.WriteWhitespace(System.String)">
2800 <summary>
2801 Writes out the given white space.
2802 </summary>
2803 <param name="ws">The string of white space characters.</param>
2804 </member>
2805 <member name="P:Newtonsoft.Json.JsonTextWriter.Indentation">
2806 <summary>
2807 Gets or sets how many IndentChars to write for each level in the hierarchy when <paramref name="Formatting"/> is set to <c>Formatting.Indented</c>.
2808 </summary>
2809 </member>
2810 <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteChar">
2811 <summary>
2812 Gets or sets which character to use to quote attribute values.
2813 </summary>
2814 </member>
2815 <member name="P:Newtonsoft.Json.JsonTextWriter.IndentChar">
2816 <summary>
2817 Gets or sets which character to use for indenting when <paramref name="Formatting"/> is set to <c>Formatting.Indented</c>.
2818 </summary>
2819 </member>
2820 <member name="P:Newtonsoft.Json.JsonTextWriter.QuoteName">
2821 <summary>
2822 Gets or sets a value indicating whether object names will be surrounded with quotes.
2823 </summary>
2824 </member>
2825 <member name="T:Newtonsoft.Json.JsonWriterException">
2826 <summary>
2827 The exception thrown when an error occurs while reading Json text.
2828 </summary>
2829 </member>
2830 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor">
2831 <summary>
2832 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class.
2833 </summary>
2834 </member>
2835 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String)">
2836 <summary>
2837 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class
2838 with a specified error message.
2839 </summary>
2840 <param name="message">The error message that explains the reason for the exception.</param>
2841 </member>
2842 <member name="M:Newtonsoft.Json.JsonWriterException.#ctor(System.String,System.Exception)">
2843 <summary>
2844 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonWriterException"/> class
2845 with a specified error message and a reference to the inner exception that is the cause of this exception.
2846 </summary>
2847 <param name="message">The error message that explains the reason for the exception.</param>
2848 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
2849 </member>
2850 <member name="T:Newtonsoft.Json.JsonReaderException">
2851 <summary>
2852 The exception thrown when an error occurs while reading Json text.
2853 </summary>
2854 </member>
2855 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor">
2856 <summary>
2857 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class.
2858 </summary>
2859 </member>
2860 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String)">
2861 <summary>
2862 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class
2863 with a specified error message.
2864 </summary>
2865 <param name="message">The error message that explains the reason for the exception.</param>
2866 </member>
2867 <member name="M:Newtonsoft.Json.JsonReaderException.#ctor(System.String,System.Exception)">
2868 <summary>
2869 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonReaderException"/> class
2870 with a specified error message and a reference to the inner exception that is the cause of this exception.
2871 </summary>
2872 <param name="message">The error message that explains the reason for the exception.</param>
2873 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
2874 </member>
2875 <member name="P:Newtonsoft.Json.JsonReaderException.LineNumber">
2876 <summary>
2877 Gets the line number indicating where the error occurred.
2878 </summary>
2879 <value>The line number indicating where the error occurred.</value>
2880 </member>
2881 <member name="P:Newtonsoft.Json.JsonReaderException.LinePosition">
2882 <summary>
2883 Gets the line position indicating where the error occurred.
2884 </summary>
2885 <value>The line position indicating where the error occurred.</value>
2886 </member>
2887 <member name="T:Newtonsoft.Json.JsonConverterCollection">
2888 <summary>
2889 Represents a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
2890 </summary>
2891 </member>
2892 <member name="T:Newtonsoft.Json.JsonConvert">
2893 <summary>
2894 Provides methods for converting between common language runtime types and JSON types.
2895 </summary>
2896 </member>
2897 <member name="F:Newtonsoft.Json.JsonConvert.True">
2898 <summary>
2899 Represents JavaScript's boolean value true as a string. This field is read-only.
2900 </summary>
2901 </member>
2902 <member name="F:Newtonsoft.Json.JsonConvert.False">
2903 <summary>
2904 Represents JavaScript's boolean value false as a string. This field is read-only.
2905 </summary>
2906 </member>
2907 <member name="F:Newtonsoft.Json.JsonConvert.Null">
2908 <summary>
2909 Represents JavaScript's null as a string. This field is read-only.
2910 </summary>
2911 </member>
2912 <member name="F:Newtonsoft.Json.JsonConvert.Undefined">
2913 <summary>
2914 Represents JavaScript's undefined as a string. This field is read-only.
2915 </summary>
2916 </member>
2917 <member name="F:Newtonsoft.Json.JsonConvert.PositiveInfinity">
2918 <summary>
2919 Represents JavaScript's positive infinity as a string. This field is read-only.
2920 </summary>
2921 </member>
2922 <member name="F:Newtonsoft.Json.JsonConvert.NegativeInfinity">
2923 <summary>
2924 Represents JavaScript's negative infinity as a string. This field is read-only.
2925 </summary>
2926 </member>
2927 <member name="F:Newtonsoft.Json.JsonConvert.NaN">
2928 <summary>
2929 Represents JavaScript's NaN as a string. This field is read-only.
2930 </summary>
2931 </member>
2932 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.DateTime)">
2933 <summary>
2934 Converts the <see cref="T:System.DateTime"/> to its JSON string representation.
2935 </summary>
2936 <param name="value">The value to convert.</param>
2937 <returns>A JSON string representation of the <see cref="T:System.DateTime"/>.</returns>
2938 </member>
2939 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Boolean)">
2940 <summary>
2941 Converts the <see cref="T:System.Boolean"/> to its JSON string representation.
2942 </summary>
2943 <param name="value">The value to convert.</param>
2944 <returns>A JSON string representation of the <see cref="T:System.Boolean"/>.</returns>
2945 </member>
2946 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Char)">
2947 <summary>
2948 Converts the <see cref="T:System.Char"/> to its JSON string representation.
2949 </summary>
2950 <param name="value">The value to convert.</param>
2951 <returns>A JSON string representation of the <see cref="T:System.Char"/>.</returns>
2952 </member>
2953 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Enum)">
2954 <summary>
2955 Converts the <see cref="T:System.Enum"/> to its JSON string representation.
2956 </summary>
2957 <param name="value">The value to convert.</param>
2958 <returns>A JSON string representation of the <see cref="T:System.Enum"/>.</returns>
2959 </member>
2960 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int32)">
2961 <summary>
2962 Converts the <see cref="T:System.Int32"/> to its JSON string representation.
2963 </summary>
2964 <param name="value">The value to convert.</param>
2965 <returns>A JSON string representation of the <see cref="T:System.Int32"/>.</returns>
2966 </member>
2967 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int16)">
2968 <summary>
2969 Converts the <see cref="T:System.Int16"/> to its JSON string representation.
2970 </summary>
2971 <param name="value">The value to convert.</param>
2972 <returns>A JSON string representation of the <see cref="T:System.Int16"/>.</returns>
2973 </member>
2974 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt16)">
2975 <summary>
2976 Converts the <see cref="T:System.UInt16"/> to its JSON string representation.
2977 </summary>
2978 <param name="value">The value to convert.</param>
2979 <returns>A JSON string representation of the <see cref="T:System.UInt16"/>.</returns>
2980 </member>
2981 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt32)">
2982 <summary>
2983 Converts the <see cref="T:System.UInt32"/> to its JSON string representation.
2984 </summary>
2985 <param name="value">The value to convert.</param>
2986 <returns>A JSON string representation of the <see cref="T:System.UInt32"/>.</returns>
2987 </member>
2988 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Int64)">
2989 <summary>
2990 Converts the <see cref="T:System.Int64"/> to its JSON string representation.
2991 </summary>
2992 <param name="value">The value to convert.</param>
2993 <returns>A JSON string representation of the <see cref="T:System.Int64"/>.</returns>
2994 </member>
2995 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.UInt64)">
2996 <summary>
2997 Converts the <see cref="T:System.UInt64"/> to its JSON string representation.
2998 </summary>
2999 <param name="value">The value to convert.</param>
3000 <returns>A JSON string representation of the <see cref="T:System.UInt64"/>.</returns>
3001 </member>
3002 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Single)">
3003 <summary>
3004 Converts the <see cref="T:System.Single"/> to its JSON string representation.
3005 </summary>
3006 <param name="value">The value to convert.</param>
3007 <returns>A JSON string representation of the <see cref="T:System.Single"/>.</returns>
3008 </member>
3009 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Double)">
3010 <summary>
3011 Converts the <see cref="T:System.Double"/> to its JSON string representation.
3012 </summary>
3013 <param name="value">The value to convert.</param>
3014 <returns>A JSON string representation of the <see cref="T:System.Double"/>.</returns>
3015 </member>
3016 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Byte)">
3017 <summary>
3018 Converts the <see cref="T:System.Byte"/> to its JSON string representation.
3019 </summary>
3020 <param name="value">The value to convert.</param>
3021 <returns>A JSON string representation of the <see cref="T:System.Byte"/>.</returns>
3022 </member>
3023 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.SByte)">
3024 <summary>
3025 Converts the <see cref="T:System.SByte"/> to its JSON string representation.
3026 </summary>
3027 <param name="value">The value to convert.</param>
3028 <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns>
3029 </member>
3030 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Decimal)">
3031 <summary>
3032 Converts the <see cref="T:System.Decimal"/> to its JSON string representation.
3033 </summary>
3034 <param name="value">The value to convert.</param>
3035 <returns>A JSON string representation of the <see cref="T:System.SByte"/>.</returns>
3036 </member>
3037 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Guid)">
3038 <summary>
3039 Converts the <see cref="T:System.Guid"/> to its JSON string representation.
3040 </summary>
3041 <param name="value">The value to convert.</param>
3042 <returns>A JSON string representation of the <see cref="T:System.Guid"/>.</returns>
3043 </member>
3044 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String)">
3045 <summary>
3046 Converts the <see cref="T:System.String"/> to its JSON string representation.
3047 </summary>
3048 <param name="value">The value to convert.</param>
3049 <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns>
3050 </member>
3051 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.String,System.Char)">
3052 <summary>
3053 Converts the <see cref="T:System.String"/> to its JSON string representation.
3054 </summary>
3055 <param name="value">The value to convert.</param>
3056 <param name="delimter">The string delimiter character.</param>
3057 <returns>A JSON string representation of the <see cref="T:System.String"/>.</returns>
3058 </member>
3059 <member name="M:Newtonsoft.Json.JsonConvert.ToString(System.Object)">
3060 <summary>
3061 Converts the <see cref="T:System.Object"/> to its JSON string representation.
3062 </summary>
3063 <param name="value">The value to convert.</param>
3064 <returns>A JSON string representation of the <see cref="T:System.Object"/>.</returns>
3065 </member>
3066 <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object)">
3067 <summary>
3068 Serializes the specified object to a JSON string.
3069 </summary>
3070 <param name="value">The object to serialize.</param>
3071 <returns>A JSON string representation of the object.</returns>
3072 </member>
3073 <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting)">
3074 <summary>
3075 Serializes the specified object to a JSON string.
3076 </summary>
3077 <param name="value">The object to serialize.</param>
3078 <param name="formatting">Indicates how the output is formatted.</param>
3079 <returns>
3080 A JSON string representation of the object.
3081 </returns>
3082 </member>
3083 <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.JsonConverter[])">
3084 <summary>
3085 Serializes the specified object to a JSON string using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
3086 </summary>
3087 <param name="value">The object to serialize.</param>
3088 <param name="converters">A collection converters used while serializing.</param>
3089 <returns>A JSON string representation of the object.</returns>
3090 </member>
3091 <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonConverter[])">
3092 <summary>
3093 Serializes the specified object to a JSON string using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
3094 </summary>
3095 <param name="value">The object to serialize.</param>
3096 <param name="formatting">Indicates how the output is formatted.</param>
3097 <param name="converters">A collection converters used while serializing.</param>
3098 <returns>A JSON string representation of the object.</returns>
3099 </member>
3100 <member name="M:Newtonsoft.Json.JsonConvert.SerializeObject(System.Object,Newtonsoft.Json.Formatting,Newtonsoft.Json.JsonSerializerSettings)">
3101 <summary>
3102 Serializes the specified object to a JSON string using a collection of <see cref="T:Newtonsoft.Json.JsonConverter"/>.
3103 </summary>
3104 <param name="value">The object to serialize.</param>
3105 <param name="formatting">Indicates how the output is formatted.</param>
3106 <param name="settings">The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to serialize the object.
3107 If this is null, default serialization settings will be is used.</param>
3108 <returns>
3109 A JSON string representation of the object.
3110 </returns>
3111 </member>
3112 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String)">
3113 <summary>
3114 Deserializes the specified object to a Json object.
3115 </summary>
3116 <param name="value">The object to deserialize.</param>
3117 <returns>The deserialized object from the Json string.</returns>
3118 </member>
3119 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type)">
3120 <summary>
3121 Deserializes the specified object to a Json object.
3122 </summary>
3123 <param name="value">The object to deserialize.</param>
3124 <param name="type">The <see cref="T:System.Type"/> of object being deserialized.</param>
3125 <returns>The deserialized object from the Json string.</returns>
3126 </member>
3127 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String)">
3128 <summary>
3129 Deserializes the specified object to a Json object.
3130 </summary>
3131 <typeparam name="T">The type of the object to deserialize.</typeparam>
3132 <param name="value">The object to deserialize.</param>
3133 <returns>The deserialized object from the Json string.</returns>
3134 </member>
3135 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeAnonymousType``1(System.String,``0)">
3136 <summary>
3137 Deserializes the specified JSON to the given anonymous type.
3138 </summary>
3139 <typeparam name="T">
3140 The anonymous type to deserialize to. This can't be specified
3141 traditionally and must be infered from the anonymous type passed
3142 as a parameter.
3143 </typeparam>
3144 <param name="value">The object to deserialize.</param>
3145 <param name="anonymousTypeObject">The anonymous type object.</param>
3146 <returns>The deserialized anonymous type from the JSON string.</returns>
3147 </member>
3148 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonConverter[])">
3149 <summary>
3150 Deserializes the JSON string to the specified type.
3151 </summary>
3152 <typeparam name="T">The type of the object to deserialize.</typeparam>
3153 <param name="value">The object to deserialize.</param>
3154 <param name="converters">Converters to use while deserializing.</param>
3155 <returns>The deserialized object from the JSON string.</returns>
3156 </member>
3157 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject``1(System.String,Newtonsoft.Json.JsonSerializerSettings)">
3158 <summary>
3159 Deserializes the JSON string to the specified type.
3160 </summary>
3161 <typeparam name="T">The type of the object to deserialize.</typeparam>
3162 <param name="value">The object to deserialize.</param>
3163 <param name="settings">
3164 The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
3165 If this is null, default serialization settings will be is used.
3166 </param>
3167 <returns>The deserialized object from the JSON string.</returns>
3168 </member>
3169 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonConverter[])">
3170 <summary>
3171 Deserializes the JSON string to the specified type.
3172 </summary>
3173 <param name="value">The object to deserialize.</param>
3174 <param name="type">The type of the object to deserialize.</param>
3175 <param name="converters">Converters to use while deserializing.</param>
3176 <returns>The deserialized object from the JSON string.</returns>
3177 </member>
3178 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeObject(System.String,System.Type,Newtonsoft.Json.JsonSerializerSettings)">
3179 <summary>
3180 Deserializes the JSON string to the specified type.
3181 </summary>
3182 <param name="value">The JSON to deserialize.</param>
3183 <param name="type">The type of the object to deserialize.</param>
3184 <param name="settings">
3185 The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
3186 If this is null, default serialization settings will be is used.
3187 </param>
3188 <returns>The deserialized object from the JSON string.</returns>
3189 </member>
3190 <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object)">
3191 <summary>
3192 Populates the object with values from the JSON string.
3193 </summary>
3194 <param name="value">The JSON to populate values from.</param>
3195 <param name="target">The target object to populate values onto.</param>
3196 </member>
3197 <member name="M:Newtonsoft.Json.JsonConvert.PopulateObject(System.String,System.Object,Newtonsoft.Json.JsonSerializerSettings)">
3198 <summary>
3199 Populates the object with values from the JSON string.
3200 </summary>
3201 <param name="value">The JSON to populate values from.</param>
3202 <param name="target">The target object to populate values onto.</param>
3203 <param name="settings">
3204 The <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/> used to deserialize the object.
3205 If this is null, default serialization settings will be is used.
3206 </param>
3207 </member>
3208 <member name="M:Newtonsoft.Json.JsonConvert.SerializeXmlNode(System.Xml.XmlNode)">
3209 <summary>
3210 Serializes the XML node to a JSON string.
3211 </summary>
3212 <param name="node">The node to serialize.</param>
3213 <returns>A JSON string of the XmlNode.</returns>
3214 </member>
3215 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String)">
3216 <summary>
3217 Deserializes the XmlNode from a JSON string.
3218 </summary>
3219 <param name="value">The JSON string.</param>
3220 <returns>The deserialized XmlNode</returns>
3221 </member>
3222 <member name="M:Newtonsoft.Json.JsonConvert.DeserializeXmlNode(System.String,System.String)">
3223 <summary>
3224 Deserializes the XmlNode from a JSON string nested in a root elment.
3225 </summary>
3226 <param name="value">The JSON string.</param>
3227 <param name="deserializeRootElementName">The name of the root element to append when deserializing.</param>
3228 <returns>The deserialized XmlNode</returns>
3229 </member>
3230 <member name="T:Newtonsoft.Json.JsonSerializationException">
3231 <summary>
3232 The exception thrown when an error occurs during Json serialization or deserialization.
3233 </summary>
3234 </member>
3235 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor">
3236 <summary>
3237 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class.
3238 </summary>
3239 </member>
3240 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String)">
3241 <summary>
3242 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class
3243 with a specified error message.
3244 </summary>
3245 <param name="message">The error message that explains the reason for the exception.</param>
3246 </member>
3247 <member name="M:Newtonsoft.Json.JsonSerializationException.#ctor(System.String,System.Exception)">
3248 <summary>
3249 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializationException"/> class
3250 with a specified error message and a reference to the inner exception that is the cause of this exception.
3251 </summary>
3252 <param name="message">The error message that explains the reason for the exception.</param>
3253 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
3254 </member>
3255 <member name="T:Newtonsoft.Json.JsonSerializer">
3256 <summary>
3257 Serializes and deserializes objects into and from the JSON format.
3258 The <see cref="T:Newtonsoft.Json.JsonSerializer"/> enables you to control how objects are encoded into JSON.
3259 </summary>
3260 </member>
3261 <member name="M:Newtonsoft.Json.JsonSerializer.#ctor">
3262 <summary>
3263 Initializes a new instance of the <see cref="T:Newtonsoft.Json.JsonSerializer"/> class.
3264 </summary>
3265 </member>
3266 <member name="M:Newtonsoft.Json.JsonSerializer.Create(Newtonsoft.Json.JsonSerializerSettings)">
3267 <summary>
3268 Creates a new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.
3269 </summary>
3270 <param name="settings">The settings to be applied to the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.</param>
3271 <returns>A new <see cref="T:Newtonsoft.Json.JsonSerializer"/> instance using the specified <see cref="T:Newtonsoft.Json.JsonSerializerSettings"/>.</returns>
3272 </member>
3273 <member name="M:Newtonsoft.Json.JsonSerializer.Populate(System.IO.TextReader,System.Object)">
3274 <summary>
3275 Populates the JSON values onto the target object.
3276 </summary>
3277 <param name="reader">The <see cref="T:System.IO.TextReader"/> that contains the JSON structure to reader values from.</param>
3278 <param name="target">The target object to populate values onto.</param>
3279 </member>
3280 <member name="M:Newtonsoft.Json.JsonSerializer.Populate(Newtonsoft.Json.JsonReader,System.Object)">
3281 <summary>
3282 Populates the JSON values onto the target object.
3283 </summary>
3284 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to reader values from.</param>
3285 <param name="target">The target object to populate values onto.</param>
3286 </member>
3287 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader)">
3288 <summary>
3289 Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
3290 </summary>
3291 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> that contains the JSON structure to deserialize.</param>
3292 <returns>The <see cref="T:System.Object"/> being deserialized.</returns>
3293 </member>
3294 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(System.IO.TextReader,System.Type)">
3295 <summary>
3296 Deserializes the Json structure contained by the specified <see cref="T:System.IO.StringReader"/>
3297 into an instance of the specified type.
3298 </summary>
3299 <param name="reader">The <see cref="T:System.IO.TextReader"/> containing the object.</param>
3300 <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param>
3301 <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
3302 </member>
3303 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize``1(Newtonsoft.Json.JsonReader)">
3304 <summary>
3305 Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
3306 into an instance of the specified type.
3307 </summary>
3308 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
3309 <typeparam name="T">The type of the object to deserialize.</typeparam>
3310 <returns>The instance of <typeparamref name="T"/> being deserialized.</returns>
3311 </member>
3312 <member name="M:Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader,System.Type)">
3313 <summary>
3314 Deserializes the Json structure contained by the specified <see cref="T:Newtonsoft.Json.JsonReader"/>
3315 into an instance of the specified type.
3316 </summary>
3317 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the object.</param>
3318 <param name="objectType">The <see cref="T:System.Type"/> of object being deserialized.</param>
3319 <returns>The instance of <paramref name="objectType"/> being deserialized.</returns>
3320 </member>
3321 <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(System.IO.TextWriter,System.Object)">
3322 <summary>
3323 Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
3324 to a <c>Stream</c> using the specified <see cref="T:System.IO.TextWriter"/>.
3325 </summary>
3326 <param name="textWriter">The <see cref="T:System.IO.TextWriter"/> used to write the Json structure.</param>
3327 <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
3328 </member>
3329 <member name="M:Newtonsoft.Json.JsonSerializer.Serialize(Newtonsoft.Json.JsonWriter,System.Object)">
3330 <summary>
3331 Serializes the specified <see cref="T:System.Object"/> and writes the Json structure
3332 to a <c>Stream</c> using the specified <see cref="T:Newtonsoft.Json.JsonWriter"/>.
3333 </summary>
3334 <param name="jsonWriter">The <see cref="T:Newtonsoft.Json.JsonWriter"/> used to write the Json structure.</param>
3335 <param name="value">The <see cref="T:System.Object"/> to serialize.</param>
3336 </member>
3337 <member name="E:Newtonsoft.Json.JsonSerializer.Error">
3338 <summary>
3339 Occurs when the <see cref="T:Newtonsoft.Json.JsonSerializer"/> errors during serialization and deserialization.
3340 </summary>
3341 </member>
3342 <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceResolver">
3343 <summary>
3344 Gets or sets the <see cref="T:Newtonsoft.Json.Serialization.IReferenceResolver"/> used by the serializer when resolving references.
3345 </summary>
3346 </member>
3347 <member name="P:Newtonsoft.Json.JsonSerializer.Binder">
3348 <summary>
3349 Gets or sets the <see cref="T:System.Runtime.Serialization.SerializationBinder"/> used by the serializer when resolving type names.
3350 </summary>
3351 </member>
3352 <member name="P:Newtonsoft.Json.JsonSerializer.TypeNameHandling">
3353 <summary>
3354 Gets or sets how type name writing and reading is handled by the serializer.
3355 </summary>
3356 </member>
3357 <member name="P:Newtonsoft.Json.JsonSerializer.PreserveReferencesHandling">
3358 <summary>
3359 Gets or sets how object references are preserved by the serializer.
3360 </summary>
3361 </member>
3362 <member name="P:Newtonsoft.Json.JsonSerializer.ReferenceLoopHandling">
3363 <summary>
3364 Get or set how reference loops (e.g. a class referencing itself) is handled.
3365 </summary>
3366 </member>
3367 <member name="P:Newtonsoft.Json.JsonSerializer.MissingMemberHandling">
3368 <summary>
3369 Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization.
3370 </summary>
3371 </member>
3372 <member name="P:Newtonsoft.Json.JsonSerializer.NullValueHandling">
3373 <summary>
3374 Get or set how null values are handled during serialization and deserialization.
3375 </summary>
3376 </member>
3377 <member name="P:Newtonsoft.Json.JsonSerializer.DefaultValueHandling">
3378 <summary>
3379 Get or set how null default are handled during serialization and deserialization.
3380 </summary>
3381 </member>
3382 <member name="P:Newtonsoft.Json.JsonSerializer.ObjectCreationHandling">
3383 <summary>
3384 Gets or sets how objects are created during deserialization.
3385 </summary>
3386 <value>The object creation handling.</value>
3387 </member>
3388 <member name="P:Newtonsoft.Json.JsonSerializer.ConstructorHandling">
3389 <summary>
3390 Gets or sets how constructors are used during deserialization.
3391 </summary>
3392 <value>The constructor handling.</value>
3393 </member>
3394 <member name="P:Newtonsoft.Json.JsonSerializer.Converters">
3395 <summary>
3396 Gets a collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.
3397 </summary>
3398 <value>Collection <see cref="T:Newtonsoft.Json.JsonConverter"/> that will be used during serialization.</value>
3399 </member>
3400 <member name="P:Newtonsoft.Json.JsonSerializer.ContractResolver">
3401 <summary>
3402 Gets or sets the contract resolver used by the serializer when
3403 serializing .NET objects to JSON and vice versa.
3404 </summary>
3405 </member>
3406 <member name="P:Newtonsoft.Json.JsonSerializer.Context">
3407 <summary>
3408 Gets or sets the <see cref="T:System.Runtime.Serialization.StreamingContext"/> used by the serializer when invoking serialization callback methods.
3409 </summary>
3410 <value>The context.</value>
3411 </member>
3412 <member name="T:Newtonsoft.Json.Linq.Extensions">
3413 <summary>
3414 Contains the LINQ to JSON extension methods.
3415 </summary>
3416 </member>
3417 <member name="M:Newtonsoft.Json.Linq.Extensions.Ancestors``1(System.Collections.Generic.IEnumerable{``0})">
3418 <summary>
3419 Returns a collection of tokens that contains the ancestors of every token in the source collection.
3420 </summary>
3421 <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</typeparam>
3422 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3423 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the ancestors of every node in the source collection.</returns>
3424 </member>
3425 <member name="M:Newtonsoft.Json.Linq.Extensions.Descendants``1(System.Collections.Generic.IEnumerable{``0})">
3426 <summary>
3427 Returns a collection of tokens that contains the descendants of every token in the source collection.
3428 </summary>
3429 <typeparam name="T">The type of the objects in source, constrained to <see cref="T:Newtonsoft.Json.Linq.JContainer"/>.</typeparam>
3430 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3431 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the descendants of every node in the source collection.</returns>
3432 </member>
3433 <member name="M:Newtonsoft.Json.Linq.Extensions.Properties(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JObject})">
3434 <summary>
3435 Returns a collection of child properties of every object in the source collection.
3436 </summary>
3437 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the source collection.</param>
3438 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the properties of every object in the source collection.</returns>
3439 </member>
3440 <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)">
3441 <summary>
3442 Returns a collection of child values of every object in the source collection with the given key.
3443 </summary>
3444 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3445 <param name="key">The token key.</param>
3446 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection with the given key.</returns>
3447 </member>
3448 <member name="M:Newtonsoft.Json.Linq.Extensions.Values(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
3449 <summary>
3450 Returns a collection of child values of every object in the source collection.
3451 </summary>
3452 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3453 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection.</returns>
3454 </member>
3455 <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken},System.Object)">
3456 <summary>
3457 Returns a collection of converted child values of every object in the source collection with the given key.
3458 </summary>
3459 <typeparam name="U">The type to convert the values to.</typeparam>
3460 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3461 <param name="key">The token key.</param>
3462 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection with the given key.</returns>
3463 </member>
3464 <member name="M:Newtonsoft.Json.Linq.Extensions.Values``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
3465 <summary>
3466 Returns a collection of converted child values of every object in the source collection.
3467 </summary>
3468 <typeparam name="U">The type to convert the values to.</typeparam>
3469 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3470 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection.</returns>
3471 </member>
3472 <member name="M:Newtonsoft.Json.Linq.Extensions.Value``1(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
3473 <summary>
3474 Converts the value.
3475 </summary>
3476 <typeparam name="U">The type to convert the value to.</typeparam>
3477 <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
3478 <returns>A converted value.</returns>
3479 </member>
3480 <member name="M:Newtonsoft.Json.Linq.Extensions.Value``2(System.Collections.Generic.IEnumerable{``0})">
3481 <summary>
3482 Converts the value.
3483 </summary>
3484 <typeparam name="T">The source collection type.</typeparam>
3485 <typeparam name="U">The type to convert the value to.</typeparam>
3486 <param name="value">A <see cref="T:Newtonsoft.Json.Linq.JToken"/> cast as a <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</param>
3487 <returns>A converted value.</returns>
3488 </member>
3489 <member name="M:Newtonsoft.Json.Linq.Extensions.Children``1(System.Collections.Generic.IEnumerable{``0})">
3490 <summary>
3491 Returns a collection of child tokens of every array in the source collection.
3492 </summary>
3493 <typeparam name="T">The source collection type.</typeparam>
3494 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3495 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the values of every node in the source collection.</returns>
3496 </member>
3497 <member name="M:Newtonsoft.Json.Linq.Extensions.Children``2(System.Collections.Generic.IEnumerable{``0})">
3498 <summary>
3499 Returns a collection of converted child tokens of every array in the source collection.
3500 </summary>
3501 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3502 <typeparam name="U">The type to convert the values to.</typeparam>
3503 <typeparam name="T">The source collection type.</typeparam>
3504 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> that contains the converted values of every node in the source collection.</returns>
3505 </member>
3506 <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable(System.Collections.Generic.IEnumerable{Newtonsoft.Json.Linq.JToken})">
3507 <summary>
3508 Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.
3509 </summary>
3510 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3511 <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns>
3512 </member>
3513 <member name="M:Newtonsoft.Json.Linq.Extensions.AsJEnumerable``1(System.Collections.Generic.IEnumerable{``0})">
3514 <summary>
3515 Returns the input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.
3516 </summary>
3517 <typeparam name="T">The source collection type.</typeparam>
3518 <param name="source">An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> that contains the source collection.</param>
3519 <returns>The input typed as <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/>.</returns>
3520 </member>
3521 <member name="T:Newtonsoft.Json.Linq.JConstructor">
3522 <summary>
3523 Represents a JSON constructor.
3524 </summary>
3525 </member>
3526 <member name="T:Newtonsoft.Json.Linq.JContainer">
3527 <summary>
3528 Represents a token that can contain other tokens.
3529 </summary>
3530 </member>
3531 <member name="M:Newtonsoft.Json.Linq.JContainer.OnAddingNew(System.ComponentModel.AddingNewEventArgs)">
3532 <summary>
3533 Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.AddingNew"/> event.
3534 </summary>
3535 <param name="e">The <see cref="T:System.ComponentModel.AddingNewEventArgs"/> instance containing the event data.</param>
3536 </member>
3537 <member name="M:Newtonsoft.Json.Linq.JContainer.OnListChanged(System.ComponentModel.ListChangedEventArgs)">
3538 <summary>
3539 Raises the <see cref="E:Newtonsoft.Json.Linq.JContainer.ListChanged"/> event.
3540 </summary>
3541 <param name="e">The <see cref="T:System.ComponentModel.ListChangedEventArgs"/> instance containing the event data.</param>
3542 </member>
3543 <member name="M:Newtonsoft.Json.Linq.JContainer.Children">
3544 <summary>
3545 Returns a collection of the child tokens of this token, in document order.
3546 </summary>
3547 <returns>
3548 An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.
3549 </returns>
3550 </member>
3551 <member name="M:Newtonsoft.Json.Linq.JContainer.Values``1">
3552 <summary>
3553 Returns a collection of the child values of this token, in document order.
3554 </summary>
3555 <typeparam name="T">The type to convert the values to.</typeparam>
3556 <returns>
3557 A <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the child values of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.
3558 </returns>
3559 </member>
3560 <member name="M:Newtonsoft.Json.Linq.JContainer.Descendants">
3561 <summary>
3562 Returns a collection of the descendant tokens for this token in document order.
3563 </summary>
3564 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> containing the descendant tokens of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.</returns>
3565 </member>
3566 <member name="M:Newtonsoft.Json.Linq.JContainer.Add(System.Object)">
3567 <summary>
3568 Adds the specified content as children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3569 </summary>
3570 <param name="content">The content to be added.</param>
3571 </member>
3572 <member name="M:Newtonsoft.Json.Linq.JContainer.AddFirst(System.Object)">
3573 <summary>
3574 Adds the specified content as the first children of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3575 </summary>
3576 <param name="content">The content to be added.</param>
3577 </member>
3578 <member name="M:Newtonsoft.Json.Linq.JContainer.CreateWriter">
3579 <summary>
3580 Creates an <see cref="T:Newtonsoft.Json.JsonWriter"/> that can be used to add tokens to the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3581 </summary>
3582 <returns>An <see cref="T:Newtonsoft.Json.JsonWriter"/> that is ready to have content written to it.</returns>
3583 </member>
3584 <member name="M:Newtonsoft.Json.Linq.JContainer.ReplaceAll(System.Object)">
3585 <summary>
3586 Replaces the children nodes of this token with the specified content.
3587 </summary>
3588 <param name="content">The content.</param>
3589 </member>
3590 <member name="M:Newtonsoft.Json.Linq.JContainer.RemoveAll">
3591 <summary>
3592 Removes the child nodes from this token.
3593 </summary>
3594 </member>
3595 <member name="E:Newtonsoft.Json.Linq.JContainer.ListChanged">
3596 <summary>
3597 Occurs when the list changes or an item in the list changes.
3598 </summary>
3599 </member>
3600 <member name="E:Newtonsoft.Json.Linq.JContainer.AddingNew">
3601 <summary>
3602 Occurs before an item is added to the collection.
3603 </summary>
3604 </member>
3605 <member name="P:Newtonsoft.Json.Linq.JContainer.HasValues">
3606 <summary>
3607 Gets a value indicating whether this token has childen tokens.
3608 </summary>
3609 <value>
3610 <c>true</c> if this token has child values; otherwise, <c>false</c>.
3611 </value>
3612 </member>
3613 <member name="P:Newtonsoft.Json.Linq.JContainer.First">
3614 <summary>
3615 Get the first child token of this token.
3616 </summary>
3617 <value>
3618 A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the first child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3619 </value>
3620 </member>
3621 <member name="P:Newtonsoft.Json.Linq.JContainer.Last">
3622 <summary>
3623 Get the last child token of this token.
3624 </summary>
3625 <value>
3626 A <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the last child token of the <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3627 </value>
3628 </member>
3629 <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor">
3630 <summary>
3631 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class.
3632 </summary>
3633 </member>
3634 <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(Newtonsoft.Json.Linq.JConstructor)">
3635 <summary>
3636 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class from another <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object.
3637 </summary>
3638 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> object to copy from.</param>
3639 </member>
3640 <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object[])">
3641 <summary>
3642 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content.
3643 </summary>
3644 <param name="name">The constructor name.</param>
3645 <param name="content">The contents of the constructor.</param>
3646 </member>
3647 <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String,System.Object)">
3648 <summary>
3649 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name and content.
3650 </summary>
3651 <param name="name">The constructor name.</param>
3652 <param name="content">The contents of the constructor.</param>
3653 </member>
3654 <member name="M:Newtonsoft.Json.Linq.JConstructor.#ctor(System.String)">
3655 <summary>
3656 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> class with the specified name.
3657 </summary>
3658 <param name="name">The constructor name.</param>
3659 </member>
3660 <member name="M:Newtonsoft.Json.Linq.JConstructor.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
3661 <summary>
3662 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
3663 </summary>
3664 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
3665 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
3666 </member>
3667 <member name="M:Newtonsoft.Json.Linq.JConstructor.Load(Newtonsoft.Json.JsonReader)">
3668 <summary>
3669 Loads an <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
3670 </summary>
3671 <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JConstructor"/>.</param>
3672 <returns>A <see cref="T:Newtonsoft.Json.Linq.JConstructor"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
3673 </member>
3674 <member name="P:Newtonsoft.Json.Linq.JConstructor.Name">
3675 <summary>
3676 Gets or sets the name of this constructor.
3677 </summary>
3678 <value>The constructor name.</value>
3679 </member>
3680 <member name="P:Newtonsoft.Json.Linq.JConstructor.Type">
3681 <summary>
3682 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3683 </summary>
3684 <value>The type.</value>
3685 </member>
3686 <member name="P:Newtonsoft.Json.Linq.JConstructor.Item(System.Object)">
3687 <summary>
3688 Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
3689 </summary>
3690 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
3691 </member>
3692 <member name="T:Newtonsoft.Json.Linq.JEnumerable`1">
3693 <summary>
3694 Represents a collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
3695 </summary>
3696 <typeparam name="T">The type of token</typeparam>
3697 </member>
3698 <member name="F:Newtonsoft.Json.Linq.JEnumerable`1.Empty">
3699 <summary>
3700 An empty collection of <see cref="T:Newtonsoft.Json.Linq.JToken"/> objects.
3701 </summary>
3702 </member>
3703 <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.#ctor(System.Collections.Generic.IEnumerable{`0})">
3704 <summary>
3705 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> struct.
3706 </summary>
3707 <param name="enumerable">The enumerable.</param>
3708 </member>
3709 <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetEnumerator">
3710 <summary>
3711 Returns an enumerator that iterates through the collection.
3712 </summary>
3713 <returns>
3714 A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
3715 </returns>
3716 </member>
3717 <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.System#Collections#IEnumerable#GetEnumerator">
3718 <summary>
3719 Returns an enumerator that iterates through a collection.
3720 </summary>
3721 <returns>
3722 An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
3723 </returns>
3724 </member>
3725 <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.Equals(System.Object)">
3726 <summary>
3727 Determines whether the specified <see cref="T:System.Object"/> is equal to this instance.
3728 </summary>
3729 <param name="obj">The <see cref="T:System.Object"/> to compare with this instance.</param>
3730 <returns>
3731 <c>true</c> if the specified <see cref="T:System.Object"/> is equal to this instance; otherwise, <c>false</c>.
3732 </returns>
3733 </member>
3734 <member name="M:Newtonsoft.Json.Linq.JEnumerable`1.GetHashCode">
3735 <summary>
3736 Returns a hash code for this instance.
3737 </summary>
3738 <returns>
3739 A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
3740 </returns>
3741 </member>
3742 <member name="P:Newtonsoft.Json.Linq.JEnumerable`1.Item(System.Object)">
3743 <summary>
3744 Gets the <see cref="T:Newtonsoft.Json.Linq.IJEnumerable`1"/> with the specified key.
3745 </summary>
3746 <value></value>
3747 </member>
3748 <member name="T:Newtonsoft.Json.Linq.JObject">
3749 <summary>
3750 Represents a JSON object.
3751 </summary>
3752 </member>
3753 <member name="M:Newtonsoft.Json.Linq.JObject.#ctor">
3754 <summary>
3755 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class.
3756 </summary>
3757 </member>
3758 <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(Newtonsoft.Json.Linq.JObject)">
3759 <summary>
3760 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class from another <see cref="T:Newtonsoft.Json.Linq.JObject"/> object.
3761 </summary>
3762 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JObject"/> object to copy from.</param>
3763 </member>
3764 <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object[])">
3765 <summary>
3766 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content.
3767 </summary>
3768 <param name="content">The contents of the object.</param>
3769 </member>
3770 <member name="M:Newtonsoft.Json.Linq.JObject.#ctor(System.Object)">
3771 <summary>
3772 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JObject"/> class with the specified content.
3773 </summary>
3774 <param name="content">The contents of the object.</param>
3775 </member>
3776 <member name="M:Newtonsoft.Json.Linq.JObject.Properties">
3777 <summary>
3778 Gets an <see cref="T:System.Collections.Generic.IEnumerable`1"/> of this object's properties.
3779 </summary>
3780 <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of this object's properties.</returns>
3781 </member>
3782 <member name="M:Newtonsoft.Json.Linq.JObject.Property(System.String)">
3783 <summary>
3784 Gets a <see cref="T:Newtonsoft.Json.Linq.JProperty"/> the specified name.
3785 </summary>
3786 <param name="name">The property name.</param>
3787 <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> with the specified name or null.</returns>
3788 </member>
3789 <member name="M:Newtonsoft.Json.Linq.JObject.PropertyValues">
3790 <summary>
3791 Gets an <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of this object's property values.
3792 </summary>
3793 <returns>An <see cref="T:Newtonsoft.Json.Linq.JEnumerable`1"/> of this object's property values.</returns>
3794 </member>
3795 <member name="M:Newtonsoft.Json.Linq.JObject.Load(Newtonsoft.Json.JsonReader)">
3796 <summary>
3797 Loads an <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
3798 </summary>
3799 <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
3800 <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
3801 </member>
3802 <member name="M:Newtonsoft.Json.Linq.JObject.Parse(System.String)">
3803 <summary>
3804 Load a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from a string that contains JSON.
3805 </summary>
3806 <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
3807 <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> populated from the string that contains JSON.</returns>
3808 </member>
3809 <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object)">
3810 <summary>
3811 Creates a <see cref="T:Newtonsoft.Json.Linq.JObject"/> from an object.
3812 </summary>
3813 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JObject"/>.</param>
3814 <returns>A <see cref="T:Newtonsoft.Json.Linq.JObject"/> with the values of the specified object</returns>
3815 </member>
3816 <member name="M:Newtonsoft.Json.Linq.JObject.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
3817 <summary>
3818 Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object.
3819 </summary>
3820 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
3821 <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param>
3822 <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object</returns>
3823 </member>
3824 <member name="M:Newtonsoft.Json.Linq.JObject.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
3825 <summary>
3826 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
3827 </summary>
3828 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
3829 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
3830 </member>
3831 <member name="M:Newtonsoft.Json.Linq.JObject.Add(System.String,Newtonsoft.Json.Linq.JToken)">
3832 <summary>
3833 Adds the specified property name.
3834 </summary>
3835 <param name="propertyName">Name of the property.</param>
3836 <param name="value">The value.</param>
3837 </member>
3838 <member name="M:Newtonsoft.Json.Linq.JObject.Remove(System.String)">
3839 <summary>
3840 Removes the property with the specified name.
3841 </summary>
3842 <param name="propertyName">Name of the property.</param>
3843 <returns>true if item was successfully removed; otherwise, false.</returns>
3844 </member>
3845 <member name="M:Newtonsoft.Json.Linq.JObject.TryGetValue(System.String,Newtonsoft.Json.Linq.JToken@)">
3846 <summary>
3847 Tries the get value.
3848 </summary>
3849 <param name="propertyName">Name of the property.</param>
3850 <param name="value">The value.</param>
3851 <returns>true if a value was successfully retrieved; otherwise, false.</returns>
3852 </member>
3853 <member name="M:Newtonsoft.Json.Linq.JObject.GetEnumerator">
3854 <summary>
3855 Returns an enumerator that iterates through the collection.
3856 </summary>
3857 <returns>
3858 A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.
3859 </returns>
3860 </member>
3861 <member name="M:Newtonsoft.Json.Linq.JObject.OnPropertyChanged(System.String)">
3862 <summary>
3863 Raises the <see cref="E:Newtonsoft.Json.Linq.JObject.PropertyChanged"/> event with the provided arguments.
3864 </summary>
3865 <param name="propertyName">Name of the property.</param>
3866 </member>
3867 <member name="E:Newtonsoft.Json.Linq.JObject.PropertyChanged">
3868 <summary>
3869 Occurs when a property value changes.
3870 </summary>
3871 </member>
3872 <member name="P:Newtonsoft.Json.Linq.JObject.Type">
3873 <summary>
3874 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
3875 </summary>
3876 <value>The type.</value>
3877 </member>
3878 <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.Object)">
3879 <summary>
3880 Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
3881 </summary>
3882 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
3883 </member>
3884 <member name="P:Newtonsoft.Json.Linq.JObject.Item(System.String)">
3885 <summary>
3886 Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified property name.
3887 </summary>
3888 <value></value>
3889 </member>
3890 <member name="P:Newtonsoft.Json.Linq.JObject.Count">
3891 <summary>
3892 Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.
3893 </summary>
3894 <value></value>
3895 <returns>The number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</returns>
3896 </member>
3897 <member name="T:Newtonsoft.Json.Linq.JArray">
3898 <summary>
3899 Represents a JSON array.
3900 </summary>
3901 </member>
3902 <member name="M:Newtonsoft.Json.Linq.JArray.#ctor">
3903 <summary>
3904 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class.
3905 </summary>
3906 </member>
3907 <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(Newtonsoft.Json.Linq.JArray)">
3908 <summary>
3909 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class from another <see cref="T:Newtonsoft.Json.Linq.JArray"/> object.
3910 </summary>
3911 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JArray"/> object to copy from.</param>
3912 </member>
3913 <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object[])">
3914 <summary>
3915 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content.
3916 </summary>
3917 <param name="content">The contents of the array.</param>
3918 </member>
3919 <member name="M:Newtonsoft.Json.Linq.JArray.#ctor(System.Object)">
3920 <summary>
3921 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JArray"/> class with the specified content.
3922 </summary>
3923 <param name="content">The contents of the array.</param>
3924 </member>
3925 <member name="M:Newtonsoft.Json.Linq.JArray.Load(Newtonsoft.Json.JsonReader)">
3926 <summary>
3927 Loads an <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
3928 </summary>
3929 <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
3930 <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
3931 </member>
3932 <member name="M:Newtonsoft.Json.Linq.JArray.Parse(System.String)">
3933 <summary>
3934 Load a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from a string that contains JSON.
3935 </summary>
3936 <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
3937 <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> populated from the string that contains JSON.</returns>
3938 </member>
3939 <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object)">
3940 <summary>
3941 Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object.
3942 </summary>
3943 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
3944 <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object</returns>
3945 </member>
3946 <member name="M:Newtonsoft.Json.Linq.JArray.FromObject(System.Object,Newtonsoft.Json.JsonSerializer)">
3947 <summary>
3948 Creates a <see cref="T:Newtonsoft.Json.Linq.JArray"/> from an object.
3949 </summary>
3950 <param name="o">The object that will be used to create <see cref="T:Newtonsoft.Json.Linq.JArray"/>.</param>
3951 <param name="jsonSerializer">The <see cref="T:Newtonsoft.Json.JsonSerializer"/> that will be used to read the object.</param>
3952 <returns>A <see cref="T:Newtonsoft.Json.Linq.JArray"/> with the values of the specified object</returns>
3953 </member>
3954 <member name="M:Newtonsoft.Json.Linq.JArray.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
3955 <summary>
3956 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
3957 </summary>
3958 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
3959 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
3960 </member>
3961 <member name="M:Newtonsoft.Json.Linq.JArray.IndexOf(Newtonsoft.Json.Linq.JToken)">
3962 <summary>
3963 Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
3964 </summary>
3965 <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
3966 <returns>
3967 The index of <paramref name="item"/> if found in the list; otherwise, -1.
3968 </returns>
3969 </member>
3970 <member name="M:Newtonsoft.Json.Linq.JArray.Insert(System.Int32,Newtonsoft.Json.Linq.JToken)">
3971 <summary>
3972 Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.
3973 </summary>
3974 <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
3975 <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
3976 <exception cref="T:System.ArgumentOutOfRangeException">
3977 <paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
3978 <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
3979 </member>
3980 <member name="M:Newtonsoft.Json.Linq.JArray.RemoveAt(System.Int32)">
3981 <summary>
3982 Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index.
3983 </summary>
3984 <param name="index">The zero-based index of the item to remove.</param>
3985 <exception cref="T:System.ArgumentOutOfRangeException">
3986 <paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception>
3987 <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>
3988 </member>
3989 <member name="M:Newtonsoft.Json.Linq.JArray.Add(Newtonsoft.Json.Linq.JToken)">
3990 <summary>
3991 Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>.
3992 </summary>
3993 <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
3994 <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
3995 </member>
3996 <member name="M:Newtonsoft.Json.Linq.JArray.Clear">
3997 <summary>
3998 Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
3999 </summary>
4000 <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only. </exception>
4001 </member>
4002 <member name="M:Newtonsoft.Json.Linq.JArray.Contains(Newtonsoft.Json.Linq.JToken)">
4003 <summary>
4004 Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.
4005 </summary>
4006 <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
4007 <returns>
4008 true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.
4009 </returns>
4010 </member>
4011 <member name="M:Newtonsoft.Json.Linq.JArray.Remove(Newtonsoft.Json.Linq.JToken)">
4012 <summary>
4013 Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>.
4014 </summary>
4015 <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>
4016 <returns>
4017 true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>.
4018 </returns>
4019 <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>
4020 </member>
4021 <member name="P:Newtonsoft.Json.Linq.JArray.Type">
4022 <summary>
4023 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
4024 </summary>
4025 <value>The type.</value>
4026 </member>
4027 <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Object)">
4028 <summary>
4029 Gets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.
4030 </summary>
4031 <value>The <see cref="T:Newtonsoft.Json.Linq.JToken"/> with the specified key.</value>
4032 </member>
4033 <member name="P:Newtonsoft.Json.Linq.JArray.Item(System.Int32)">
4034 <summary>
4035 Gets or sets the <see cref="T:Newtonsoft.Json.Linq.JToken"/> at the specified index.
4036 </summary>
4037 <value></value>
4038 </member>
4039 <member name="P:Newtonsoft.Json.Linq.JArray.Count">
4040 <summary>
4041 Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.
4042 </summary>
4043 <value></value>
4044 <returns>The number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</returns>
4045 </member>
4046 <member name="T:Newtonsoft.Json.Linq.JTokenReader">
4047 <summary>
4048 Represents a reader that provides fast, non-cached, forward-only access to serialized Json data.
4049 </summary>
4050 </member>
4051 <member name="M:Newtonsoft.Json.Linq.JTokenReader.#ctor(Newtonsoft.Json.Linq.JToken)">
4052 <summary>
4053 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JTokenReader"/> class.
4054 </summary>
4055 <param name="token">The token to read from.</param>
4056 </member>
4057 <member name="M:Newtonsoft.Json.Linq.JTokenReader.ReadAsBytes">
4058 <summary>
4059 Reads the next JSON token from the stream as a <see cref="T:Byte[]"/>.
4060 </summary>
4061 <returns>
4062 A <see cref="T:Byte[]"/> or a null reference if the next JSON token is null.
4063 </returns>
4064 </member>
4065 <member name="M:Newtonsoft.Json.Linq.JTokenReader.Read">
4066 <summary>
4067 Reads the next JSON token from the stream.
4068 </summary>
4069 <returns>
4070 true if the next token was read successfully; false if there are no more tokens to read.
4071 </returns>
4072 </member>
4073 <member name="T:Newtonsoft.Json.Linq.JProperty">
4074 <summary>
4075 Represents a JSON property.
4076 </summary>
4077 </member>
4078 <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(Newtonsoft.Json.Linq.JProperty)">
4079 <summary>
4080 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class from another <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object.
4081 </summary>
4082 <param name="other">A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> object to copy from.</param>
4083 </member>
4084 <member name="M:Newtonsoft.Json.Linq.JProperty.Children">
4085 <summary>
4086 Returns a collection of the child tokens of this token, in document order.
4087 </summary>
4088 <returns>
4089 An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of <see cref="T:Newtonsoft.Json.Linq.JToken"/> containing the child tokens of this <see cref="T:Newtonsoft.Json.Linq.JToken"/>, in document order.
4090 </returns>
4091 </member>
4092 <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object[])">
4093 <summary>
4094 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class.
4095 </summary>
4096 <param name="name">The property name.</param>
4097 <param name="content">The property content.</param>
4098 </member>
4099 <member name="M:Newtonsoft.Json.Linq.JProperty.#ctor(System.String,System.Object)">
4100 <summary>
4101 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/> class.
4102 </summary>
4103 <param name="name">The property name.</param>
4104 <param name="content">The property content.</param>
4105 </member>
4106 <member name="M:Newtonsoft.Json.Linq.JProperty.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[])">
4107 <summary>
4108 Writes this token to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
4109 </summary>
4110 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
4111 <param name="converters">A collection of <see cref="T:Newtonsoft.Json.JsonConverter"/> which will be used when writing the token.</param>
4112 </member>
4113 <member name="M:Newtonsoft.Json.Linq.JProperty.Load(Newtonsoft.Json.JsonReader)">
4114 <summary>
4115 Loads an <see cref="T:Newtonsoft.Json.Linq.JProperty"/> from a <see cref="T:Newtonsoft.Json.JsonReader"/>.
4116 </summary>
4117 <param name="reader">A <see cref="T:Newtonsoft.Json.JsonReader"/> that will be read for the content of the <see cref="T:Newtonsoft.Json.Linq.JProperty"/>.</param>
4118 <returns>A <see cref="T:Newtonsoft.Json.Linq.JProperty"/> that contains the JSON that was read from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.</returns>
4119 </member>
4120 <member name="P:Newtonsoft.Json.Linq.JProperty.Name">
4121 <summary>
4122 Gets the property name.
4123 </summary>
4124 <value>The property name.</value>
4125 </member>
4126 <member name="P:Newtonsoft.Json.Linq.JProperty.Value">
4127 <summary>
4128 Gets or sets the property value.
4129 </summary>
4130 <value>The property value.</value>
4131 </member>
4132 <member name="P:Newtonsoft.Json.Linq.JProperty.Type">
4133 <summary>
4134 Gets the node type for this <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
4135 </summary>
4136 <value>The type.</value>
4137 </member>
4138 <member name="T:Newtonsoft.Json.Linq.JTokenType">
4139 <summary>
4140 Specifies the type of token.
4141 </summary>
4142 </member>
4143 <member name="F:Newtonsoft.Json.Linq.JTokenType.None">
4144 <summary>
4145 No token type has been set.
4146 </summary>
4147 </member>
4148 <member name="F:Newtonsoft.Json.Linq.JTokenType.Object">
4149 <summary>
4150 A JSON object.
4151 </summary>
4152 </member>
4153 <member name="F:Newtonsoft.Json.Linq.JTokenType.Array">
4154 <summary>
4155 A JSON array.
4156 </summary>
4157 </member>
4158 <member name="F:Newtonsoft.Json.Linq.JTokenType.Constructor">
4159 <summary>
4160 A JSON constructor.
4161 </summary>
4162 </member>
4163 <member name="F:Newtonsoft.Json.Linq.JTokenType.Property">
4164 <summary>
4165 A JSON object property.
4166 </summary>
4167 </member>
4168 <member name="F:Newtonsoft.Json.Linq.JTokenType.Comment">
4169 <summary>
4170 A comment.
4171 </summary>
4172 </member>
4173 <member name="F:Newtonsoft.Json.Linq.JTokenType.Integer">
4174 <summary>
4175 An integer value.
4176 </summary>
4177 </member>
4178 <member name="F:Newtonsoft.Json.Linq.JTokenType.Float">
4179 <summary>
4180 A float value.
4181 </summary>
4182 </member>
4183 <member name="F:Newtonsoft.Json.Linq.JTokenType.String">
4184 <summary>
4185 A string value.
4186 </summary>
4187 </member>
4188 <member name="F:Newtonsoft.Json.Linq.JTokenType.Boolean">
4189 <summary>
4190 A boolean value.
4191 </summary>
4192 </member>
4193 <member name="F:Newtonsoft.Json.Linq.JTokenType.Null">
4194 <summary>
4195 A null value.
4196 </summary>
4197 </member>
4198 <member name="F:Newtonsoft.Json.Linq.JTokenType.Undefined">
4199 <summary>
4200 An undefined value.
4201 </summary>
4202 </member>
4203 <member name="F:Newtonsoft.Json.Linq.JTokenType.Date">
4204 <summary>
4205 A date value.
4206 </summary>
4207 </member>
4208 <member name="F:Newtonsoft.Json.Linq.JTokenType.Raw">
4209 <summary>
4210 A raw JSON value.
4211 </summary>
4212 </member>
4213 <member name="F:Newtonsoft.Json.Linq.JTokenType.Bytes">
4214 <summary>
4215 A collection of bytes value.
4216 </summary>
4217 </member>
4218 <member name="T:Newtonsoft.Json.Schema.Extensions">
4219 <summary>
4220 Contains the JSON schema extension methods.
4221 </summary>
4222 </member>
4223 <member name="M:Newtonsoft.Json.Schema.Extensions.IsValid(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
4224 <summary>
4225 Determines whether the <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid.
4226 </summary>
4227 <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
4228 <param name="schema">The schema to test with.</param>
4229 <returns>
4230 <c>true</c> if the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/> is valid; otherwise, <c>false</c>.
4231 </returns>
4232 </member>
4233 <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema)">
4234 <summary>
4235 Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
4236 </summary>
4237 <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
4238 <param name="schema">The schema to test with.</param>
4239 </member>
4240 <member name="M:Newtonsoft.Json.Schema.Extensions.Validate(Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Schema.JsonSchema,Newtonsoft.Json.Schema.ValidationEventHandler)">
4241 <summary>
4242 Validates the specified <see cref="T:Newtonsoft.Json.Linq.JToken"/>.
4243 </summary>
4244 <param name="source">The source <see cref="T:Newtonsoft.Json.Linq.JToken"/> to test.</param>
4245 <param name="schema">The schema to test with.</param>
4246 <param name="validationEventHandler">The validation event handler.</param>
4247 </member>
4248 <member name="T:Newtonsoft.Json.Schema.JsonSchemaException">
4249 <summary>
4250 Returns detailed information about the schema exception.
4251 </summary>
4252 </member>
4253 <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor">
4254 <summary>
4255 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class.
4256 </summary>
4257 </member>
4258 <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String)">
4259 <summary>
4260 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class
4261 with a specified error message.
4262 </summary>
4263 <param name="message">The error message that explains the reason for the exception.</param>
4264 </member>
4265 <member name="M:Newtonsoft.Json.Schema.JsonSchemaException.#ctor(System.String,System.Exception)">
4266 <summary>
4267 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> class
4268 with a specified error message and a reference to the inner exception that is the cause of this exception.
4269 </summary>
4270 <param name="message">The error message that explains the reason for the exception.</param>
4271 <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
4272 </member>
4273 <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LineNumber">
4274 <summary>
4275 Gets the line number indicating where the error occurred.
4276 </summary>
4277 <value>The line number indicating where the error occurred.</value>
4278 </member>
4279 <member name="P:Newtonsoft.Json.Schema.JsonSchemaException.LinePosition">
4280 <summary>
4281 Gets the line position indicating where the error occurred.
4282 </summary>
4283 <value>The line position indicating where the error occurred.</value>
4284 </member>
4285 <member name="T:Newtonsoft.Json.Schema.JsonSchemaResolver">
4286 <summary>
4287 Resolves <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from an id.
4288 </summary>
4289 </member>
4290 <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.#ctor">
4291 <summary>
4292 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> class.
4293 </summary>
4294 </member>
4295 <member name="M:Newtonsoft.Json.Schema.JsonSchemaResolver.GetSchema(System.String)">
4296 <summary>
4297 Gets a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified id.
4298 </summary>
4299 <param name="id">The id.</param>
4300 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> for the specified id.</returns>
4301 </member>
4302 <member name="P:Newtonsoft.Json.Schema.JsonSchemaResolver.LoadedSchemas">
4303 <summary>
4304 Gets or sets the loaded schemas.
4305 </summary>
4306 <value>The loaded schemas.</value>
4307 </member>
4308 <member name="T:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling">
4309 <summary>
4310 Specifies undefined schema Id handling options for the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaGenerator"/>.
4311 </summary>
4312 </member>
4313 <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.None">
4314 <summary>
4315 Do not infer a schema Id.
4316 </summary>
4317 </member>
4318 <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseTypeName">
4319 <summary>
4320 Use the .NET type name as the schema Id.
4321 </summary>
4322 </member>
4323 <member name="F:Newtonsoft.Json.Schema.UndefinedSchemaIdHandling.UseAssemblyQualifiedName">
4324 <summary>
4325 Use the assembly qualified .NET type name as the schema Id.
4326 </summary>
4327 </member>
4328 <member name="T:Newtonsoft.Json.Schema.ValidationEventArgs">
4329 <summary>
4330 Returns detailed information related to the <see cref="T:Newtonsoft.Json.Schema.ValidationEventHandler"/>.
4331 </summary>
4332 </member>
4333 <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Exception">
4334 <summary>
4335 Gets the <see cref="T:Newtonsoft.Json.Schema.JsonSchemaException"/> associated with the validation event.
4336 </summary>
4337 <value>The JsonSchemaException associated with the validation event.</value>
4338 </member>
4339 <member name="P:Newtonsoft.Json.Schema.ValidationEventArgs.Message">
4340 <summary>
4341 Gets the text description corresponding to the validation event.
4342 </summary>
4343 <value>The text description.</value>
4344 </member>
4345 <member name="T:Newtonsoft.Json.Schema.ValidationEventHandler">
4346 <summary>
4347 Represents the callback method that will handle JSON schema validation events and the <see cref="T:Newtonsoft.Json.Schema.ValidationEventArgs"/>.
4348 </summary>
4349 </member>
4350 <member name="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver">
4351 <summary>
4352 Resolves member mappings for a type, camel casing property names.
4353 </summary>
4354 </member>
4355 <member name="T:Newtonsoft.Json.Serialization.DefaultContractResolver">
4356 <summary>
4357 Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolves a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>.
4358 </summary>
4359 </member>
4360 <member name="T:Newtonsoft.Json.Serialization.IContractResolver">
4361 <summary>
4362 Used by <see cref="T:Newtonsoft.Json.JsonSerializer"/> to resolves a <see cref="T:Newtonsoft.Json.Serialization.JsonContract"/> for a given <see cref="T:System.Type"/>.
4363 </summary>
4364 </member>
4365 <member name="M:Newtonsoft.Json.Serialization.IContractResolver.ResolveContract(System.Type)">
4366 <summary>
4367 Resolves the contract for a given type.
4368 </summary>
4369 <param name="type">The type to resolve a contract for.</param>
4370 <returns>The contract for a given type.</returns>
4371 </member>
4372 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.#ctor">
4373 <summary>
4374 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DefaultContractResolver"/> class.
4375 </summary>
4376 </member>
4377 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(System.Type)">
4378 <summary>
4379 Resolves the contract for a given type.
4380 </summary>
4381 <param name="type">The type to resolve a contract for.</param>
4382 <returns>The contract for a given type.</returns>
4383 </member>
4384 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.GetSerializableMembers(System.Type)">
4385 <summary>
4386 Gets the serializable members for the type.
4387 </summary>
4388 <param name="objectType">The type to get serializable members for.</param>
4389 <returns>The serializable members for the type.</returns>
4390 </member>
4391 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(System.Type)">
4392 <summary>
4393 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type.
4394 </summary>
4395 <param name="objectType">Type of the object.</param>
4396 <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> for the given type.</returns>
4397 </member>
4398 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContractConverter(System.Type)">
4399 <summary>
4400 Resolves the default <see cref="T:Newtonsoft.Json.JsonConverter"/> for the contract.
4401 </summary>
4402 <param name="objectType">Type of the object.</param>
4403 <returns></returns>
4404 </member>
4405 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateDictionaryContract(System.Type)">
4406 <summary>
4407 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type.
4408 </summary>
4409 <param name="objectType">Type of the object.</param>
4410 <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> for the given type.</returns>
4411 </member>
4412 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateArrayContract(System.Type)">
4413 <summary>
4414 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type.
4415 </summary>
4416 <param name="objectType">Type of the object.</param>
4417 <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> for the given type.</returns>
4418 </member>
4419 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreatePrimitiveContract(System.Type)">
4420 <summary>
4421 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type.
4422 </summary>
4423 <param name="objectType">Type of the object.</param>
4424 <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> for the given type.</returns>
4425 </member>
4426 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateLinqContract(System.Type)">
4427 <summary>
4428 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type.
4429 </summary>
4430 <param name="objectType">Type of the object.</param>
4431 <returns>A <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> for the given type.</returns>
4432 </member>
4433 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperties(Newtonsoft.Json.Serialization.JsonObjectContract)">
4434 <summary>
4435 Creates properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/>.
4436 </summary>
4437 <param name="contract">The contract to create properties for.</param>
4438 <returns>Properties for the given <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/>.</returns>
4439 </member>
4440 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateMemberValueProvider(System.Reflection.MemberInfo)">
4441 <summary>
4442 Creates the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member.
4443 </summary>
4444 <param name="member">The member.</param>
4445 <returns>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> used by the serializer to get and set values from a member.</returns>
4446 </member>
4447 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.CreateProperty(Newtonsoft.Json.Serialization.JsonObjectContract,System.Reflection.MemberInfo)">
4448 <summary>
4449 Creates a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>.
4450 </summary>
4451 <param name="contract">The member's declaring types <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/>.</param>
4452 <param name="member">The member to create a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for.</param>
4453 <returns>A created <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> for the given <see cref="T:System.Reflection.MemberInfo"/>.</returns>
4454 </member>
4455 <member name="M:Newtonsoft.Json.Serialization.DefaultContractResolver.ResolvePropertyName(System.String)">
4456 <summary>
4457 Resolves the name of the property.
4458 </summary>
4459 <param name="propertyName">Name of the property.</param>
4460 <returns>Name of the property.</returns>
4461 </member>
4462 <member name="P:Newtonsoft.Json.Serialization.DefaultContractResolver.DefaultMembersSearchFlags">
4463 <summary>
4464 Gets or sets the default members search flags.
4465 </summary>
4466 <value>The default members search flags.</value>
4467 </member>
4468 <member name="M:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver.ResolvePropertyName(System.String)">
4469 <summary>
4470 Resolves the name of the property.
4471 </summary>
4472 <param name="propertyName">Name of the property.</param>
4473 <returns>The property name camel cased.</returns>
4474 </member>
4475 <member name="T:Newtonsoft.Json.Serialization.DefaultSerializationBinder">
4476 <summary>
4477 The default serialization binder used when resolving and loading classes from type names.
4478 </summary>
4479 </member>
4480 <member name="M:Newtonsoft.Json.Serialization.DefaultSerializationBinder.BindToType(System.String,System.String)">
4481 <summary>
4482 When overridden in a derived class, controls the binding of a serialized object to a type.
4483 </summary>
4484 <param name="assemblyName">Specifies the <see cref="T:System.Reflection.Assembly"/> name of the serialized object.</param>
4485 <param name="typeName">Specifies the <see cref="T:System.Type"/> name of the serialized object.</param>
4486 <returns>
4487 The type of the object the formatter creates a new instance of.
4488 </returns>
4489 </member>
4490 <member name="T:Newtonsoft.Json.Serialization.DynamicValueProvider">
4491 <summary>
4492 Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using dynamic methods.
4493 </summary>
4494 </member>
4495 <member name="T:Newtonsoft.Json.Serialization.IValueProvider">
4496 <summary>
4497 Provides methods to get and set values.
4498 </summary>
4499 </member>
4500 <member name="M:Newtonsoft.Json.Serialization.IValueProvider.SetValue(System.Object,System.Object)">
4501 <summary>
4502 Sets the value.
4503 </summary>
4504 <param name="target">The target to set the value on.</param>
4505 <param name="value">The value to set on the target.</param>
4506 </member>
4507 <member name="M:Newtonsoft.Json.Serialization.IValueProvider.GetValue(System.Object)">
4508 <summary>
4509 Gets the value.
4510 </summary>
4511 <param name="target">The target to get the value from.</param>
4512 <returns>The value.</returns>
4513 </member>
4514 <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.#ctor(System.Reflection.MemberInfo)">
4515 <summary>
4516 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.DynamicValueProvider"/> class.
4517 </summary>
4518 <param name="memberInfo">The member info.</param>
4519 </member>
4520 <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.SetValue(System.Object,System.Object)">
4521 <summary>
4522 Sets the value.
4523 </summary>
4524 <param name="target">The target to set the value on.</param>
4525 <param name="value">The value to set on the target.</param>
4526 </member>
4527 <member name="M:Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(System.Object)">
4528 <summary>
4529 Gets the value.
4530 </summary>
4531 <param name="target">The target to get the value from.</param>
4532 <returns>The value.</returns>
4533 </member>
4534 <member name="T:Newtonsoft.Json.Serialization.ErrorContext">
4535 <summary>
4536 Provides information surrounding an error.
4537 </summary>
4538 </member>
4539 <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Error">
4540 <summary>
4541 Gets or sets the error.
4542 </summary>
4543 <value>The error.</value>
4544 </member>
4545 <member name="P:Newtonsoft.Json.Serialization.ErrorContext.OriginalObject">
4546 <summary>
4547 Gets the original object that caused the error.
4548 </summary>
4549 <value>The original object that caused the error.</value>
4550 </member>
4551 <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Member">
4552 <summary>
4553 Gets the member that caused the error.
4554 </summary>
4555 <value>The member that caused the error.</value>
4556 </member>
4557 <member name="P:Newtonsoft.Json.Serialization.ErrorContext.Handled">
4558 <summary>
4559 Gets or sets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.ErrorContext"/> is handled.
4560 </summary>
4561 <value><c>true</c> if handled; otherwise, <c>false</c>.</value>
4562 </member>
4563 <member name="T:Newtonsoft.Json.Serialization.ErrorEventArgs">
4564 <summary>
4565 Provides data for the Error event.
4566 </summary>
4567 </member>
4568 <member name="M:Newtonsoft.Json.Serialization.ErrorEventArgs.#ctor(System.Object,Newtonsoft.Json.Serialization.ErrorContext)">
4569 <summary>
4570 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ErrorEventArgs"/> class.
4571 </summary>
4572 <param name="currentObject">The current object.</param>
4573 <param name="errorContext">The error context.</param>
4574 </member>
4575 <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.CurrentObject">
4576 <summary>
4577 Gets the current object the error event is being raised against.
4578 </summary>
4579 <value>The current object the error event is being raised against.</value>
4580 </member>
4581 <member name="P:Newtonsoft.Json.Serialization.ErrorEventArgs.ErrorContext">
4582 <summary>
4583 Gets the error context.
4584 </summary>
4585 <value>The error context.</value>
4586 </member>
4587 <member name="T:Newtonsoft.Json.Serialization.JsonArrayContract">
4588 <summary>
4589 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4590 </summary>
4591 </member>
4592 <member name="T:Newtonsoft.Json.Serialization.JsonContract">
4593 <summary>
4594 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4595 </summary>
4596 </member>
4597 <member name="P:Newtonsoft.Json.Serialization.JsonContract.UnderlyingType">
4598 <summary>
4599 Gets the underlying type for the contract.
4600 </summary>
4601 <value>The underlying type for the contract.</value>
4602 </member>
4603 <member name="P:Newtonsoft.Json.Serialization.JsonContract.CreatedType">
4604 <summary>
4605 Gets or sets the type created during deserialization.
4606 </summary>
4607 <value>The type created during deserialization.</value>
4608 </member>
4609 <member name="P:Newtonsoft.Json.Serialization.JsonContract.IsReference">
4610 <summary>
4611 Gets or sets whether this type contract is serialized as a reference.
4612 </summary>
4613 <value>Whether this type contract is serialized as a reference.</value>
4614 </member>
4615 <member name="P:Newtonsoft.Json.Serialization.JsonContract.Converter">
4616 <summary>
4617 Gets or sets the default <see cref="T:Newtonsoft.Json.JsonConverter"/> for this contract.
4618 </summary>
4619 <value>The converter.</value>
4620 </member>
4621 <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserialized">
4622 <summary>
4623 Gets or sets the method called immediately after deserialization of the object.
4624 </summary>
4625 <value>The method called immediately after deserialization of the object.</value>
4626 </member>
4627 <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnDeserializing">
4628 <summary>
4629 Gets or sets the method called during deserialization of the object.
4630 </summary>
4631 <value>The method called during deserialization of the object.</value>
4632 </member>
4633 <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerialized">
4634 <summary>
4635 Gets or sets the method called after serialization of the object graph.
4636 </summary>
4637 <value>The method called after serialization of the object graph.</value>
4638 </member>
4639 <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnSerializing">
4640 <summary>
4641 Gets or sets the method called before serialization of the object.
4642 </summary>
4643 <value>The method called before serialization of the object.</value>
4644 </member>
4645 <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreator">
4646 <summary>
4647 Gets or sets the default creator.
4648 </summary>
4649 <value>The default creator.</value>
4650 </member>
4651 <member name="P:Newtonsoft.Json.Serialization.JsonContract.DefaultCreatorNonPublic">
4652 <summary>
4653 Gets or sets a value indicating whether [default creator non public].
4654 </summary>
4655 <value><c>true</c> if the default object creator is non-public; otherwise, <c>false</c>.</value>
4656 </member>
4657 <member name="P:Newtonsoft.Json.Serialization.JsonContract.OnError">
4658 <summary>
4659 Gets or sets the method called when an error is thrown during the serialization of the object.
4660 </summary>
4661 <value>The method called when an error is thrown during the serialization of the object.</value>
4662 </member>
4663 <member name="M:Newtonsoft.Json.Serialization.JsonArrayContract.#ctor(System.Type)">
4664 <summary>
4665 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonArrayContract"/> class.
4666 </summary>
4667 <param name="underlyingType">The underlying type for the contract.</param>
4668 </member>
4669 <member name="T:Newtonsoft.Json.Serialization.JsonDictionaryContract">
4670 <summary>
4671 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4672 </summary>
4673 </member>
4674 <member name="M:Newtonsoft.Json.Serialization.JsonDictionaryContract.#ctor(System.Type)">
4675 <summary>
4676 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonDictionaryContract"/> class.
4677 </summary>
4678 <param name="underlyingType">The underlying type for the contract.</param>
4679 </member>
4680 <member name="T:Newtonsoft.Json.Serialization.JsonLinqContract">
4681 <summary>
4682 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4683 </summary>
4684 </member>
4685 <member name="M:Newtonsoft.Json.Serialization.JsonLinqContract.#ctor(System.Type)">
4686 <summary>
4687 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonLinqContract"/> class.
4688 </summary>
4689 <param name="underlyingType">The underlying type for the contract.</param>
4690 </member>
4691 <member name="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract">
4692 <summary>
4693 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4694 </summary>
4695 </member>
4696 <member name="M:Newtonsoft.Json.Serialization.JsonPrimitiveContract.#ctor(System.Type)">
4697 <summary>
4698 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPrimitiveContract"/> class.
4699 </summary>
4700 <param name="underlyingType">The underlying type for the contract.</param>
4701 </member>
4702 <member name="T:Newtonsoft.Json.Serialization.JsonProperty">
4703 <summary>
4704 Maps a JSON property to a .NET member.
4705 </summary>
4706 </member>
4707 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyName">
4708 <summary>
4709 Gets the name of the property.
4710 </summary>
4711 <value>The name of the property.</value>
4712 </member>
4713 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ValueProvider">
4714 <summary>
4715 Gets the <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization.
4716 </summary>
4717 <value>The <see cref="T:Newtonsoft.Json.Serialization.IValueProvider"/> that will get and set the <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> during serialization.</value>
4718 </member>
4719 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.PropertyType">
4720 <summary>
4721 Gets or sets the type of the property.
4722 </summary>
4723 <value>The type of the property.</value>
4724 </member>
4725 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Converter">
4726 <summary>
4727 Gets or sets the <see cref="T:Newtonsoft.Json.JsonConverter"/> for the property.
4728 If set this converter takes presidence over the contract converter for the property type.
4729 </summary>
4730 <value>The converter.</value>
4731 </member>
4732 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Ignored">
4733 <summary>
4734 Gets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is ignored.
4735 </summary>
4736 <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
4737 </member>
4738 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Readable">
4739 <summary>
4740 Gets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is readable.
4741 </summary>
4742 <value><c>true</c> if readable; otherwise, <c>false</c>.</value>
4743 </member>
4744 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Writable">
4745 <summary>
4746 Gets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is writable.
4747 </summary>
4748 <value><c>true</c> if writable; otherwise, <c>false</c>.</value>
4749 </member>
4750 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.MemberConverter">
4751 <summary>
4752 Gets the member converter.
4753 </summary>
4754 <value>The member converter.</value>
4755 </member>
4756 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValue">
4757 <summary>
4758 Gets the default value.
4759 </summary>
4760 <value>The default value.</value>
4761 </member>
4762 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.Required">
4763 <summary>
4764 Gets a value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required.
4765 </summary>
4766 <value>A value indicating whether this <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> is required.</value>
4767 </member>
4768 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.IsReference">
4769 <summary>
4770 Gets a value indicating whether this property preserves object references.
4771 </summary>
4772 <value>
4773 <c>true</c> if this instance is reference; otherwise, <c>false</c>.
4774 </value>
4775 </member>
4776 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.NullValueHandling">
4777 <summary>
4778 Gets the property null value handling.
4779 </summary>
4780 <value>The null value handling.</value>
4781 </member>
4782 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.DefaultValueHandling">
4783 <summary>
4784 Gets the property default value handling.
4785 </summary>
4786 <value>The default value handling.</value>
4787 </member>
4788 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ReferenceLoopHandling">
4789 <summary>
4790 Gets the property reference loop handling.
4791 </summary>
4792 <value>The reference loop handling.</value>
4793 </member>
4794 <member name="P:Newtonsoft.Json.Serialization.JsonProperty.ObjectCreationHandling">
4795 <summary>
4796 Gets the property object creation handling.
4797 </summary>
4798 <value>The object creation handling.</value>
4799 </member>
4800 <member name="T:Newtonsoft.Json.Serialization.JsonPropertyCollection">
4801 <summary>
4802 A collection of <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> objects.
4803 </summary>
4804 </member>
4805 <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.#ctor(Newtonsoft.Json.Serialization.JsonObjectContract)">
4806 <summary>
4807 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonPropertyCollection"/> class.
4808 </summary>
4809 <param name="contract">The contract.</param>
4810 </member>
4811 <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetKeyForItem(Newtonsoft.Json.Serialization.JsonProperty)">
4812 <summary>
4813 When implemented in a derived class, extracts the key from the specified element.
4814 </summary>
4815 <param name="item">The element from which to extract the key.</param>
4816 <returns>The key for the specified element.</returns>
4817 </member>
4818 <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.AddProperty(Newtonsoft.Json.Serialization.JsonProperty)">
4819 <summary>
4820 Adds a <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object.
4821 </summary>
4822 <param name="property">The property to add to the collection.</param>
4823 </member>
4824 <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetClosestMatchProperty(System.String)">
4825 <summary>
4826 Gets the closest matching <see cref="T:Newtonsoft.Json.Serialization.JsonProperty"/> object.
4827 First attempts to get an exact case match of propertyName and then
4828 a case insensitive match.
4829 </summary>
4830 <param name="propertyName">Name of the property.</param>
4831 <returns>A matching property if found.</returns>
4832 </member>
4833 <member name="M:Newtonsoft.Json.Serialization.JsonPropertyCollection.GetProperty(System.String,System.StringComparison)">
4834 <summary>
4835 Gets a property by property name.
4836 </summary>
4837 <param name="propertyName">The name of the property to get.</param>
4838 <param name="comparisonType">Type property name string comparison.</param>
4839 <returns>A matching property if found.</returns>
4840 </member>
4841 <member name="T:Newtonsoft.Json.MissingMemberHandling">
4842 <summary>
4843 Specifies missing member handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4844 </summary>
4845 </member>
4846 <member name="F:Newtonsoft.Json.MissingMemberHandling.Ignore">
4847 <summary>
4848 Ignore a missing member and do not attempt to deserialize it.
4849 </summary>
4850 </member>
4851 <member name="F:Newtonsoft.Json.MissingMemberHandling.Error">
4852 <summary>
4853 Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a missing member is encountered during deserialization.
4854 </summary>
4855 </member>
4856 <member name="T:Newtonsoft.Json.NullValueHandling">
4857 <summary>
4858 Specifies null value handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4859 </summary>
4860 </member>
4861 <member name="F:Newtonsoft.Json.NullValueHandling.Include">
4862 <summary>
4863 Include null values when serializing and deserializing objects.
4864 </summary>
4865 </member>
4866 <member name="F:Newtonsoft.Json.NullValueHandling.Ignore">
4867 <summary>
4868 Ignore null values when serializing and deserializing objects.
4869 </summary>
4870 </member>
4871 <member name="T:Newtonsoft.Json.ReferenceLoopHandling">
4872 <summary>
4873 Specifies reference loop handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
4874 </summary>
4875 </member>
4876 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Error">
4877 <summary>
4878 Throw a <see cref="T:Newtonsoft.Json.JsonSerializationException"/> when a loop is encountered.
4879 </summary>
4880 </member>
4881 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Ignore">
4882 <summary>
4883 Ignore loop references and do not serialize.
4884 </summary>
4885 </member>
4886 <member name="F:Newtonsoft.Json.ReferenceLoopHandling.Serialize">
4887 <summary>
4888 Serialize loop references.
4889 </summary>
4890 </member>
4891 <member name="T:Newtonsoft.Json.Schema.JsonSchema">
4892 <summary>
4893 An in-memory representation of a JSON Schema.
4894 </summary>
4895 </member>
4896 <member name="M:Newtonsoft.Json.Schema.JsonSchema.#ctor">
4897 <summary>
4898 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> class.
4899 </summary>
4900 </member>
4901 <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader)">
4902 <summary>
4903 Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
4904 </summary>
4905 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param>
4906 <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns>
4907 </member>
4908 <member name="M:Newtonsoft.Json.Schema.JsonSchema.Read(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Schema.JsonSchemaResolver)">
4909 <summary>
4910 Reads a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified <see cref="T:Newtonsoft.Json.JsonReader"/>.
4911 </summary>
4912 <param name="reader">The <see cref="T:Newtonsoft.Json.JsonReader"/> containing the JSON Schema to read.</param>
4913 <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> to use when resolving schema references.</param>
4914 <returns>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> object representing the JSON Schema.</returns>
4915 </member>
4916 <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String)">
4917 <summary>
4918 Load a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a string that contains schema JSON.
4919 </summary>
4920 <param name="json">A <see cref="T:System.String"/> that contains JSON.</param>
4921 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON.</returns>
4922 </member>
4923 <member name="M:Newtonsoft.Json.Schema.JsonSchema.Parse(System.String,Newtonsoft.Json.Schema.JsonSchemaResolver)">
4924 <summary>
4925 Parses the specified json.
4926 </summary>
4927 <param name="json">The json.</param>
4928 <param name="resolver">The resolver.</param>
4929 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> populated from the string that contains JSON.</returns>
4930 </member>
4931 <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter)">
4932 <summary>
4933 Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/>.
4934 </summary>
4935 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
4936 </member>
4937 <member name="M:Newtonsoft.Json.Schema.JsonSchema.WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.Schema.JsonSchemaResolver)">
4938 <summary>
4939 Writes this schema to a <see cref="T:Newtonsoft.Json.JsonWriter"/> using the specified <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/>.
4940 </summary>
4941 <param name="writer">A <see cref="T:Newtonsoft.Json.JsonWriter"/> into which this method will write.</param>
4942 <param name="resolver">The resolver used.</param>
4943 </member>
4944 <member name="M:Newtonsoft.Json.Schema.JsonSchema.ToString">
4945 <summary>
4946 Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
4947 </summary>
4948 <returns>
4949 A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
4950 </returns>
4951 </member>
4952 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Id">
4953 <summary>
4954 Gets or sets the id.
4955 </summary>
4956 </member>
4957 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Title">
4958 <summary>
4959 Gets or sets the title.
4960 </summary>
4961 </member>
4962 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Optional">
4963 <summary>
4964 Gets or sets whether the object is optional.
4965 </summary>
4966 </member>
4967 <member name="P:Newtonsoft.Json.Schema.JsonSchema.ReadOnly">
4968 <summary>
4969 Gets or sets whether the object is read only.
4970 </summary>
4971 </member>
4972 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Hidden">
4973 <summary>
4974 Gets or sets whether the object is visible to users.
4975 </summary>
4976 </member>
4977 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Transient">
4978 <summary>
4979 Gets or sets whether the object is transient.
4980 </summary>
4981 </member>
4982 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Description">
4983 <summary>
4984 Gets or sets the description of the object.
4985 </summary>
4986 </member>
4987 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Type">
4988 <summary>
4989 Gets or sets the types of values allowed by the object.
4990 </summary>
4991 <value>The type.</value>
4992 </member>
4993 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Pattern">
4994 <summary>
4995 Gets or sets the pattern.
4996 </summary>
4997 <value>The pattern.</value>
4998 </member>
4999 <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumLength">
5000 <summary>
5001 Gets or sets the minimum length.
5002 </summary>
5003 <value>The minimum length.</value>
5004 </member>
5005 <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumLength">
5006 <summary>
5007 Gets or sets the maximum length.
5008 </summary>
5009 <value>The maximum length.</value>
5010 </member>
5011 <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumDecimals">
5012 <summary>
5013 Gets or sets the maximum decimals.
5014 </summary>
5015 <value>The maximum decimals.</value>
5016 </member>
5017 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Minimum">
5018 <summary>
5019 Gets or sets the minimum.
5020 </summary>
5021 <value>The minimum.</value>
5022 </member>
5023 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Maximum">
5024 <summary>
5025 Gets or sets the maximum.
5026 </summary>
5027 <value>The maximum.</value>
5028 </member>
5029 <member name="P:Newtonsoft.Json.Schema.JsonSchema.MinimumItems">
5030 <summary>
5031 Gets or sets the minimum number of items.
5032 </summary>
5033 <value>The minimum number of items.</value>
5034 </member>
5035 <member name="P:Newtonsoft.Json.Schema.JsonSchema.MaximumItems">
5036 <summary>
5037 Gets or sets the maximum number of items.
5038 </summary>
5039 <value>The maximum number of items.</value>
5040 </member>
5041 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Items">
5042 <summary>
5043 Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items.
5044 </summary>
5045 <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of items.</value>
5046 </member>
5047 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Properties">
5048 <summary>
5049 Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties.
5050 </summary>
5051 <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of properties.</value>
5052 </member>
5053 <member name="P:Newtonsoft.Json.Schema.JsonSchema.AdditionalProperties">
5054 <summary>
5055 Gets or sets the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties.
5056 </summary>
5057 <value>The <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> of additional properties.</value>
5058 </member>
5059 <member name="P:Newtonsoft.Json.Schema.JsonSchema.AllowAdditionalProperties">
5060 <summary>
5061 Gets or sets a value indicating whether additional properties are allowed.
5062 </summary>
5063 <value>
5064 <c>true</c> if additional properties are allowed; otherwise, <c>false</c>.
5065 </value>
5066 </member>
5067 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Requires">
5068 <summary>
5069 Gets or sets the required property if this property is present.
5070 </summary>
5071 <value>The required property if this property is present.</value>
5072 </member>
5073 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Identity">
5074 <summary>
5075 Gets or sets the identity.
5076 </summary>
5077 <value>The identity.</value>
5078 </member>
5079 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Enum">
5080 <summary>
5081 Gets or sets the a collection of valid enum values allowed.
5082 </summary>
5083 <value>A collection of valid enum values allowed.</value>
5084 </member>
5085 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Options">
5086 <summary>
5087 Gets or sets a collection of options.
5088 </summary>
5089 <value>A collection of options.</value>
5090 </member>
5091 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Disallow">
5092 <summary>
5093 Gets or sets disallowed types.
5094 </summary>
5095 <value>The disallow types.</value>
5096 </member>
5097 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Default">
5098 <summary>
5099 Gets or sets the default value.
5100 </summary>
5101 <value>The default value.</value>
5102 </member>
5103 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Extends">
5104 <summary>
5105 Gets or sets the extend <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>.
5106 </summary>
5107 <value>The extended <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>.</value>
5108 </member>
5109 <member name="P:Newtonsoft.Json.Schema.JsonSchema.Format">
5110 <summary>
5111 Gets or sets the format.
5112 </summary>
5113 <value>The format.</value>
5114 </member>
5115 <member name="T:Newtonsoft.Json.Schema.JsonSchemaGenerator">
5116 <summary>
5117 Generates a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from a specified <see cref="T:System.Type"/>.
5118 </summary>
5119 </member>
5120 <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type)">
5121 <summary>
5122 Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
5123 </summary>
5124 <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
5125 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
5126 </member>
5127 <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver)">
5128 <summary>
5129 Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
5130 </summary>
5131 <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
5132 <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param>
5133 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
5134 </member>
5135 <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,System.Boolean)">
5136 <summary>
5137 Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
5138 </summary>
5139 <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
5140 <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param>
5141 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
5142 </member>
5143 <member name="M:Newtonsoft.Json.Schema.JsonSchemaGenerator.Generate(System.Type,Newtonsoft.Json.Schema.JsonSchemaResolver,System.Boolean)">
5144 <summary>
5145 Generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from the specified type.
5146 </summary>
5147 <param name="type">The type to generate a <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> from.</param>
5148 <param name="resolver">The <see cref="T:Newtonsoft.Json.Schema.JsonSchemaResolver"/> used to resolve schema references.</param>
5149 <param name="rootSchemaNullable">Specify whether the generated root <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> will be nullable.</param>
5150 <returns>A <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/> generated from the specified type.</returns>
5151 </member>
5152 <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.UndefinedSchemaIdHandling">
5153 <summary>
5154 Gets or sets how undefined schemas are handled by the serializer.
5155 </summary>
5156 </member>
5157 <member name="P:Newtonsoft.Json.Schema.JsonSchemaGenerator.ContractResolver">
5158 <summary>
5159 Gets or sets the contract resolver.
5160 </summary>
5161 <value>The contract resolver.</value>
5162 </member>
5163 <member name="T:Newtonsoft.Json.Schema.JsonSchemaType">
5164 <summary>
5165 The value types allowed by the <see cref="T:Newtonsoft.Json.Schema.JsonSchema"/>.
5166 </summary>
5167 </member>
5168 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.None">
5169 <summary>
5170 No type specified.
5171 </summary>
5172 </member>
5173 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.String">
5174 <summary>
5175 String type.
5176 </summary>
5177 </member>
5178 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Float">
5179 <summary>
5180 Float type.
5181 </summary>
5182 </member>
5183 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Integer">
5184 <summary>
5185 Integer type.
5186 </summary>
5187 </member>
5188 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Boolean">
5189 <summary>
5190 Boolean type.
5191 </summary>
5192 </member>
5193 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Object">
5194 <summary>
5195 Object type.
5196 </summary>
5197 </member>
5198 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Array">
5199 <summary>
5200 Array type.
5201 </summary>
5202 </member>
5203 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Null">
5204 <summary>
5205 Null type.
5206 </summary>
5207 </member>
5208 <member name="F:Newtonsoft.Json.Schema.JsonSchemaType.Any">
5209 <summary>
5210 Any type.
5211 </summary>
5212 </member>
5213 <member name="T:Newtonsoft.Json.Serialization.JsonObjectContract">
5214 <summary>
5215 Contract details for a <see cref="T:System.Type"/> used by the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
5216 </summary>
5217 </member>
5218 <member name="M:Newtonsoft.Json.Serialization.JsonObjectContract.#ctor(System.Type)">
5219 <summary>
5220 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.JsonObjectContract"/> class.
5221 </summary>
5222 <param name="underlyingType">The underlying type for the contract.</param>
5223 </member>
5224 <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.MemberSerialization">
5225 <summary>
5226 Gets or sets the object member serialization.
5227 </summary>
5228 <value>The member object serialization.</value>
5229 </member>
5230 <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.Properties">
5231 <summary>
5232 Gets the object's properties.
5233 </summary>
5234 <value>The object's properties.</value>
5235 </member>
5236 <member name="P:Newtonsoft.Json.Serialization.JsonObjectContract.ParametrizedConstructor">
5237 <summary>
5238 Gets or sets the parametrized constructor used to create the object.
5239 </summary>
5240 <value>The parametrized constructor.</value>
5241 </member>
5242 <member name="T:Newtonsoft.Json.Serialization.OnErrorAttribute">
5243 <summary>
5244 When applied to a method, specifies that the method is called when an error occurs serializing an object.
5245 </summary>
5246 </member>
5247 <member name="T:Newtonsoft.Json.Serialization.ReflectionValueProvider">
5248 <summary>
5249 Get and set values for a <see cref="T:System.Reflection.MemberInfo"/> using reflection.
5250 </summary>
5251 </member>
5252 <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.#ctor(System.Reflection.MemberInfo)">
5253 <summary>
5254 Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.ReflectionValueProvider"/> class.
5255 </summary>
5256 <param name="memberInfo">The member info.</param>
5257 </member>
5258 <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.SetValue(System.Object,System.Object)">
5259 <summary>
5260 Sets the value.
5261 </summary>
5262 <param name="target">The target to set the value on.</param>
5263 <param name="value">The value to set on the target.</param>
5264 </member>
5265 <member name="M:Newtonsoft.Json.Serialization.ReflectionValueProvider.GetValue(System.Object)">
5266 <summary>
5267 Gets the value.
5268 </summary>
5269 <param name="target">The target to get the value from.</param>
5270 <returns>The value.</returns>
5271 </member>
5272 <member name="T:Newtonsoft.Json.TypeNameHandling">
5273 <summary>
5274 Specifies type name handling options for the <see cref="T:Newtonsoft.Json.JsonSerializer"/>.
5275 </summary>
5276 </member>
5277 <member name="F:Newtonsoft.Json.TypeNameHandling.None">
5278 <summary>
5279 Do not include the .NET type name when serializing types.
5280 </summary>
5281 </member>
5282 <member name="F:Newtonsoft.Json.TypeNameHandling.Objects">
5283 <summary>
5284 Include the .NET type name when serializing into a JSON object structure.
5285 </summary>
5286 </member>
5287 <member name="F:Newtonsoft.Json.TypeNameHandling.Arrays">
5288 <summary>
5289 Include the .NET type name when serializing into a JSON array structure.
5290 </summary>
5291 </member>
5292 <member name="F:Newtonsoft.Json.TypeNameHandling.All">
5293 <summary>
5294 Always include the .NET type name when serializing.
5295 </summary>
5296 </member>
5297 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.Convert``1(System.Object)">
5298 <summary>
5299 Converts the value to the specified type.
5300 </summary>
5301 <typeparam name="T">The type to convert the value to.</typeparam>
5302 <param name="initialValue">The value to convert.</param>
5303 <returns>The converted type.</returns>
5304 </member>
5305 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.Convert``1(System.Object,System.Globalization.CultureInfo)">
5306 <summary>
5307 Converts the value to the specified type.
5308 </summary>
5309 <typeparam name="T">The type to convert the value to.</typeparam>
5310 <param name="initialValue">The value to convert.</param>
5311 <param name="culture">The culture to use when converting.</param>
5312 <returns>The converted type.</returns>
5313 </member>
5314 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.Convert(System.Object,System.Globalization.CultureInfo,System.Type)">
5315 <summary>
5316 Converts the value to the specified type.
5317 </summary>
5318 <param name="initialValue">The value to convert.</param>
5319 <param name="culture">The culture to use when converting.</param>
5320 <param name="targetType">The type to convert the value to.</param>
5321 <returns>The converted type.</returns>
5322 </member>
5323 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvert``1(System.Object,``0@)">
5324 <summary>
5325 Converts the value to the specified type.
5326 </summary>
5327 <typeparam name="T">The type to convert the value to.</typeparam>
5328 <param name="initialValue">The value to convert.</param>
5329 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5330 <returns>
5331 <c>true</c> if <c>initialValue</c> was converted successfully; otherwise, <c>false</c>.
5332 </returns>
5333 </member>
5334 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvert``1(System.Object,System.Globalization.CultureInfo,``0@)">
5335 <summary>
5336 Converts the value to the specified type.
5337 </summary>
5338 <typeparam name="T">The type to convert the value to.</typeparam>
5339 <param name="initialValue">The value to convert.</param>
5340 <param name="culture">The culture to use when converting.</param>
5341 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5342 <returns>
5343 <c>true</c> if <c>initialValue</c> was converted successfully; otherwise, <c>false</c>.
5344 </returns>
5345 </member>
5346 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvert(System.Object,System.Globalization.CultureInfo,System.Type,System.Object@)">
5347 <summary>
5348 Converts the value to the specified type.
5349 </summary>
5350 <param name="initialValue">The value to convert.</param>
5351 <param name="culture">The culture to use when converting.</param>
5352 <param name="targetType">The type to convert the value to.</param>
5353 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5354 <returns>
5355 <c>true</c> if <c>initialValue</c> was converted successfully; otherwise, <c>false</c>.
5356 </returns>
5357 </member>
5358 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast``1(System.Object)">
5359 <summary>
5360 Converts the value to the specified type. If the value is unable to be converted, the
5361 value is checked whether it assignable to the specified type.
5362 </summary>
5363 <typeparam name="T">The type to convert or cast the value to.</typeparam>
5364 <param name="initialValue">The value to convert.</param>
5365 <returns>The converted type. If conversion was unsuccessful, the initial value is returned if assignable to the target type</returns>
5366 </member>
5367 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast``1(System.Object,System.Globalization.CultureInfo)">
5368 <summary>
5369 Converts the value to the specified type. If the value is unable to be converted, the
5370 value is checked whether it assignable to the specified type.
5371 </summary>
5372 <typeparam name="T">The type to convert or cast the value to.</typeparam>
5373 <param name="initialValue">The value to convert.</param>
5374 <param name="culture">The culture to use when converting.</param>
5375 <returns>The converted type. If conversion was unsuccessful, the initial value is returned if assignable to the target type</returns>
5376 </member>
5377 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.ConvertOrCast(System.Object,System.Globalization.CultureInfo,System.Type)">
5378 <summary>
5379 Converts the value to the specified type. If the value is unable to be converted, the
5380 value is checked whether it assignable to the specified type.
5381 </summary>
5382 <param name="initialValue">The value to convert.</param>
5383 <param name="culture">The culture to use when converting.</param>
5384 <param name="targetType">The type to convert or cast the value to.</param>
5385 <returns>
5386 The converted type. If conversion was unsuccessful, the initial value
5387 is returned if assignable to the target type.
5388 </returns>
5389 </member>
5390 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvertOrCast``1(System.Object,``0@)">
5391 <summary>
5392 Converts the value to the specified type. If the value is unable to be converted, the
5393 value is checked whether it assignable to the specified type.
5394 </summary>
5395 <typeparam name="T">The type to convert the value to.</typeparam>
5396 <param name="initialValue">The value to convert.</param>
5397 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5398 <returns>
5399 <c>true</c> if <c>initialValue</c> was converted successfully or is assignable; otherwise, <c>false</c>.
5400 </returns>
5401 </member>
5402 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvertOrCast``1(System.Object,System.Globalization.CultureInfo,``0@)">
5403 <summary>
5404 Converts the value to the specified type. If the value is unable to be converted, the
5405 value is checked whether it assignable to the specified type.
5406 </summary>
5407 <typeparam name="T">The type to convert the value to.</typeparam>
5408 <param name="initialValue">The value to convert.</param>
5409 <param name="culture">The culture to use when converting.</param>
5410 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5411 <returns>
5412 <c>true</c> if <c>initialValue</c> was converted successfully or is assignable; otherwise, <c>false</c>.
5413 </returns>
5414 </member>
5415 <member name="M:Newtonsoft.Json.Utilities.ConvertUtils.TryConvertOrCast(System.Object,System.Globalization.CultureInfo,System.Type,System.Object@)">
5416 <summary>
5417 Converts the value to the specified type. If the value is unable to be converted, the
5418 value is checked whether it assignable to the specified type.
5419 </summary>
5420 <param name="initialValue">The value to convert.</param>
5421 <param name="culture">The culture to use when converting.</param>
5422 <param name="targetType">The type to convert the value to.</param>
5423 <param name="convertedValue">The converted value if the conversion was successful or the default value of <c>T</c> if it failed.</param>
5424 <returns>
5425 <c>true</c> if <c>initialValue</c> was converted successfully or is assignable; otherwise, <c>false</c>.
5426 </returns>
5427 </member>
5428 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.Parse``1(System.String)">
5429 <summary>
5430 Parses the specified enum member name, returning it's value.
5431 </summary>
5432 <param name="enumMemberName">Name of the enum member.</param>
5433 <returns></returns>
5434 </member>
5435 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.Parse``1(System.String,System.Boolean)">
5436 <summary>
5437 Parses the specified enum member name, returning it's value.
5438 </summary>
5439 <param name="enumMemberName">Name of the enum member.</param>
5440 <param name="ignoreCase">If set to <c>true</c> ignore case.</param>
5441 <returns></returns>
5442 </member>
5443 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1">
5444 <summary>
5445 Gets a dictionary of the names and values of an Enum type.
5446 </summary>
5447 <returns></returns>
5448 </member>
5449 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``2">
5450 <summary>
5451 Gets a dictionary of the names and values of an Enum type.
5452 </summary>
5453 <returns></returns>
5454 </member>
5455 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetNamesAndValues``1(System.Type)">
5456 <summary>
5457 Gets a dictionary of the names and values of an Enum type.
5458 </summary>
5459 <param name="enumType">The enum type to get names and values for.</param>
5460 <returns></returns>
5461 </member>
5462 <member name="M:Newtonsoft.Json.Utilities.EnumUtils.GetMaximumValue``1(System.Type)">
5463 <summary>
5464 Gets the maximum valid value of an Enum type. Flags enums are ORed.
5465 </summary>
5466 <typeparam name="TEnumType">The type of the returned value. Must be assignable from the enum's underlying value type.</typeparam>
5467 <param name="enumType">The enum type to get the maximum value for.</param>
5468 <returns></returns>
5469 </member>
5470 <member name="T:Newtonsoft.Json.JsonToken">
5471 <summary>
5472 Specifies the type of Json token.
5473 </summary>
5474 </member>
5475 <member name="F:Newtonsoft.Json.JsonToken.None">
5476 <summary>
5477 This is returned by the <see cref="T:Newtonsoft.Json.JsonReader"/> if a <see cref="M:Newtonsoft.Json.JsonReader.Read"/> method has not been called.
5478 </summary>
5479 </member>
5480 <member name="F:Newtonsoft.Json.JsonToken.StartObject">
5481 <summary>
5482 An object start token.
5483 </summary>
5484 </member>
5485 <member name="F:Newtonsoft.Json.JsonToken.StartArray">
5486 <summary>
5487 An array start token.
5488 </summary>
5489 </member>
5490 <member name="F:Newtonsoft.Json.JsonToken.StartConstructor">
5491 <summary>
5492 A constructor start token.
5493 </summary>
5494 </member>
5495 <member name="F:Newtonsoft.Json.JsonToken.PropertyName">
5496 <summary>
5497 An object property name.
5498 </summary>
5499 </member>
5500 <member name="F:Newtonsoft.Json.JsonToken.Comment">
5501 <summary>
5502 A comment.
5503 </summary>
5504 </member>
5505 <member name="F:Newtonsoft.Json.JsonToken.Raw">
5506 <summary>
5507 Raw JSON.
5508 </summary>
5509 </member>
5510 <member name="F:Newtonsoft.Json.JsonToken.Integer">
5511 <summary>
5512 An interger.
5513 </summary>
5514 </member>
5515 <member name="F:Newtonsoft.Json.JsonToken.Float">
5516 <summary>
5517 A float.
5518 </summary>
5519 </member>
5520 <member name="F:Newtonsoft.Json.JsonToken.String">
5521 <summary>
5522 A string.
5523 </summary>
5524 </member>
5525 <member name="F:Newtonsoft.Json.JsonToken.Boolean">
5526 <summary>
5527 A boolean.
5528 </summary>
5529 </member>
5530 <member name="F:Newtonsoft.Json.JsonToken.Null">
5531 <summary>
5532 A null token.
5533 </summary>
5534 </member>
5535 <member name="F:Newtonsoft.Json.JsonToken.Undefined">
5536 <summary>
5537 An undefined token.
5538 </summary>
5539 </member>
5540 <member name="F:Newtonsoft.Json.JsonToken.EndObject">
5541 <summary>
5542 An object end token.
5543 </summary>
5544 </member>
5545 <member name="F:Newtonsoft.Json.JsonToken.EndArray">
5546 <summary>
5547 An array end token.
5548 </summary>
5549 </member>
5550 <member name="F:Newtonsoft.Json.JsonToken.EndConstructor">
5551 <summary>
5552 A constructor end token.
5553 </summary>
5554 </member>
5555 <member name="F:Newtonsoft.Json.JsonToken.Date">
5556 <summary>
5557 A Date.
5558 </summary>
5559 </member>
5560 <member name="F:Newtonsoft.Json.JsonToken.Bytes">
5561 <summary>
5562 Byte data.
5563 </summary>
5564 </member>
5565 <member name="T:Newtonsoft.Json.WriteState">
5566 <summary>
5567 Specifies the state of the <see cref="T:Newtonsoft.Json.JsonWriter"/>.
5568 </summary>
5569 </member>
5570 <member name="F:Newtonsoft.Json.WriteState.Error">
5571 <summary>
5572 An exception has been thrown, which has left the <see cref="T:Newtonsoft.Json.JsonWriter"/> in an invalid state.
5573 You may call the <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method to put the <see cref="T:Newtonsoft.Json.JsonWriter"/> in the <c>Closed</c> state.
5574 Any other <see cref="T:Newtonsoft.Json.JsonWriter"/> method calls results in an <see cref="T:System.InvalidOperationException"/> being thrown.
5575 </summary>
5576 </member>
5577 <member name="F:Newtonsoft.Json.WriteState.Closed">
5578 <summary>
5579 The <see cref="M:Newtonsoft.Json.JsonWriter.Close"/> method has been called.
5580 </summary>
5581 </member>
5582 <member name="F:Newtonsoft.Json.WriteState.Object">
5583 <summary>
5584 An object is being written.
5585 </summary>
5586 </member>
5587 <member name="F:Newtonsoft.Json.WriteState.Array">
5588 <summary>
5589 A array is being written.
5590 </summary>
5591 </member>
5592 <member name="F:Newtonsoft.Json.WriteState.Constructor">
5593 <summary>
5594 A constructor is being written.
5595 </summary>
5596 </member>
5597 <member name="F:Newtonsoft.Json.WriteState.Property">
5598 <summary>
5599 A property is being written.
5600 </summary>
5601 </member>
5602 <member name="F:Newtonsoft.Json.WriteState.Start">
5603 <summary>
5604 A write method has not been called.
5605 </summary>
5606 </member>
5607 <member name="T:Newtonsoft.Json.Formatting">
5608 <summary>
5609 Specifies formatting options for the <see cref="T:Newtonsoft.Json.JsonTextWriter"/>.
5610 </summary>
5611 </member>
5612 <member name="F:Newtonsoft.Json.Formatting.None">
5613 <summary>
5614 No special formatting is applied. This is the default.
5615 </summary>
5616 </member>
5617 <member name="F:Newtonsoft.Json.Formatting.Indented">
5618 <summary>
5619 Causes child objects to be indented according to the <see cref="P:Newtonsoft.Json.JsonTextWriter.Indentation"/> and <see cref="P:Newtonsoft.Json.JsonTextWriter.IndentChar"/> settings.
5620 </summary>
5621 </member>
5622 <member name="T:Newtonsoft.Json.Utilities.StringBuffer">
5623 <summary>
5624 Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer.
5625 </summary>
5626 </member>
5627 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty(System.Collections.ICollection)">
5628 <summary>
5629 Determines whether the collection is null or empty.
5630 </summary>
5631 <param name="collection">The collection.</param>
5632 <returns>
5633 <c>true</c> if the collection is null or empty; otherwise, <c>false</c>.
5634 </returns>
5635 </member>
5636 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmpty``1(System.Collections.Generic.ICollection{``0})">
5637 <summary>
5638 Determines whether the collection is null or empty.
5639 </summary>
5640 <param name="collection">The collection.</param>
5641 <returns>
5642 <c>true</c> if the collection is null or empty; otherwise, <c>false</c>.
5643 </returns>
5644 </member>
5645 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.IsNullOrEmptyOrDefault``1(System.Collections.Generic.IList{``0})">
5646 <summary>
5647 Determines whether the collection is null, empty or its contents are uninitialized values.
5648 </summary>
5649 <param name="list">The list.</param>
5650 <returns>
5651 <c>true</c> if the collection is null or empty or its contents are uninitialized values; otherwise, <c>false</c>.
5652 </returns>
5653 </member>
5654 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.Slice``1(System.Collections.Generic.IList{``0},System.Nullable{System.Int32},System.Nullable{System.Int32})">
5655 <summary>
5656 Makes a slice of the specified list in between the start and end indexes.
5657 </summary>
5658 <param name="list">The list.</param>
5659 <param name="start">The start index.</param>
5660 <param name="end">The end index.</param>
5661 <returns>A slice of the list.</returns>
5662 </member>
5663 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.Slice``1(System.Collections.Generic.IList{``0},System.Nullable{System.Int32},System.Nullable{System.Int32},System.Nullable{System.Int32})">
5664 <summary>
5665 Makes a slice of the specified list in between the start and end indexes,
5666 getting every so many items based upon the step.
5667 </summary>
5668 <param name="list">The list.</param>
5669 <param name="start">The start index.</param>
5670 <param name="end">The end index.</param>
5671 <param name="step">The step.</param>
5672 <returns>A slice of the list.</returns>
5673 </member>
5674 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.GroupBy``2(System.Collections.Generic.ICollection{``1},System.Func{``1,``0})">
5675 <summary>
5676 Group the collection using a function which returns the key.
5677 </summary>
5678 <param name="source">The source collection to group.</param>
5679 <param name="keySelector">The key selector.</param>
5680 <returns>A Dictionary with each key relating to a list of objects in a list grouped under it.</returns>
5681 </member>
5682 <member name="M:Newtonsoft.Json.Utilities.CollectionUtils.AddRange``1(System.Collections.Generic.IList{``0},System.Collections.Generic.IEnumerable{``0})">
5683 <summary>
5684 Adds the elements of the specified collection to the specified generic IList.
5685 </summary>
5686 <param name="initial">The list to add to.</param>
5687 <param name="collection">The collection of elements to add.</param>
5688 </member>
5689 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetCollectionItemType(System.Type)">
5690 <summary>
5691 Gets the type of the typed collection's items.
5692 </summary>
5693 <param name="type">The type.</param>
5694 <returns>The type of the typed collection's items.</returns>
5695 </member>
5696 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.ItemsUnitializedValue``1(System.Collections.Generic.IList{``0})">
5697 <summary>
5698 Tests whether the list's items are their unitialized value.
5699 </summary>
5700 <param name="list">The list.</param>
5701 <returns>Whether the list's items are their unitialized value</returns>
5702 </member>
5703 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberUnderlyingType(System.Reflection.MemberInfo)">
5704 <summary>
5705 Gets the member's underlying type.
5706 </summary>
5707 <param name="member">The member.</param>
5708 <returns>The underlying type of the member.</returns>
5709 </member>
5710 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.MemberInfo)">
5711 <summary>
5712 Determines whether the member is an indexed property.
5713 </summary>
5714 <param name="member">The member.</param>
5715 <returns>
5716 <c>true</c> if the member is an indexed property; otherwise, <c>false</c>.
5717 </returns>
5718 </member>
5719 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.IsIndexedProperty(System.Reflection.PropertyInfo)">
5720 <summary>
5721 Determines whether the property is an indexed property.
5722 </summary>
5723 <param name="property">The property.</param>
5724 <returns>
5725 <c>true</c> if the property is an indexed property; otherwise, <c>false</c>.
5726 </returns>
5727 </member>
5728 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.GetMemberValue(System.Reflection.MemberInfo,System.Object)">
5729 <summary>
5730 Gets the member's value on the object.
5731 </summary>
5732 <param name="member">The member.</param>
5733 <param name="target">The target object.</param>
5734 <returns>The member's value on the object.</returns>
5735 </member>
5736 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.SetMemberValue(System.Reflection.MemberInfo,System.Object,System.Object)">
5737 <summary>
5738 Sets the member's value on the target object.
5739 </summary>
5740 <param name="member">The member.</param>
5741 <param name="target">The target.</param>
5742 <param name="value">The value.</param>
5743 </member>
5744 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanReadMemberValue(System.Reflection.MemberInfo)">
5745 <summary>
5746 Determines whether the specified MemberInfo can be read.
5747 </summary>
5748 <param name="member">The MemberInfo to determine whether can be read.</param>
5749 <returns>
5750 <c>true</c> if the specified MemberInfo can be read; otherwise, <c>false</c>.
5751 </returns>
5752 </member>
5753 <member name="M:Newtonsoft.Json.Utilities.ReflectionUtils.CanSetMemberValue(System.Reflection.MemberInfo)">
5754 <summary>
5755 Determines whether the specified MemberInfo can be set.
5756 </summary>
5757 <param name="member">The MemberInfo to determine whether can be set.</param>
5758 <returns>
5759 <c>true</c> if the specified MemberInfo can be set; otherwise, <c>false</c>.
5760 </returns>
5761 </member>
5762 <member name="M:Newtonsoft.Json.Utilities.StringUtils.ContainsWhiteSpace(System.String)">
5763 <summary>
5764 Determines whether the string contains white space.
5765 </summary>
5766 <param name="s">The string to test for white space.</param>
5767 <returns>
5768 <c>true</c> if the string contains white space; otherwise, <c>false</c>.
5769 </returns>
5770 </member>
5771 <member name="M:Newtonsoft.Json.Utilities.StringUtils.IsWhiteSpace(System.String)">
5772 <summary>
5773 Determines whether the string is all white space. Empty string will return false.
5774 </summary>
5775 <param name="s">The string to test whether it is all white space.</param>
5776 <returns>
5777 <c>true</c> if the string is all white space; otherwise, <c>false</c>.
5778 </returns>
5779 </member>
5780 <member name="M:Newtonsoft.Json.Utilities.StringUtils.EnsureEndsWith(System.String,System.String)">
5781 <summary>
5782 Ensures the target string ends with the specified string.
5783 </summary>
5784 <param name="target">The target.</param>
5785 <param name="value">The value.</param>
5786 <returns>The target string with the value string at the end.</returns>
5787 </member>
5788 <member name="M:Newtonsoft.Json.Utilities.StringUtils.IfNotNullOrEmpty(System.String,System.Action{System.String})">
5789 <summary>
5790 Perform an action if the string is not null or empty.
5791 </summary>
5792 <param name="value">The value.</param>
5793 <param name="action">The action to perform.</param>
5794 </member>
5795 <member name="M:Newtonsoft.Json.Utilities.StringUtils.Indent(System.String,System.Int32)">
5796 <summary>
5797 Indents the specified string.
5798 </summary>
5799 <param name="s">The string to indent.</param>
5800 <param name="indentation">The number of characters to indent by.</param>
5801 <returns></returns>
5802 </member>
5803 <member name="M:Newtonsoft.Json.Utilities.StringUtils.Indent(System.String,System.Int32,System.Char)">
5804 <summary>
5805 Indents the specified string.
5806 </summary>
5807 <param name="s">The string to indent.</param>
5808 <param name="indentation">The number of characters to indent by.</param>
5809 <param name="indentChar">The indent character.</param>
5810 <returns></returns>
5811 </member>
5812 <member name="M:Newtonsoft.Json.Utilities.StringUtils.NumberLines(System.String)">
5813 <summary>
5814 Numbers the lines.
5815 </summary>
5816 <param name="s">The string to number.</param>
5817 <returns></returns>
5818 </member>
5819 <member name="M:Newtonsoft.Json.Utilities.StringUtils.NullEmptyString(System.String)">
5820 <summary>
5821 Nulls an empty string.
5822 </summary>
5823 <param name="s">The string.</param>
5824 <returns>Null if the string was null, otherwise the string unchanged.</returns>
5825 </member>
5826 </members>
5827</doc>
diff --git a/bin/Newtonsoft.Json.dll b/bin/Newtonsoft.Json.dll
index 3b14448..177d9b5 100644
--- a/bin/Newtonsoft.Json.dll
+++ b/bin/Newtonsoft.Json.dll
Binary files differ
diff --git a/bin/Newtonsoft.Json.pdb b/bin/Newtonsoft.Json.pdb
index a8b8b8f..892546a 100644
--- a/bin/Newtonsoft.Json.pdb
+++ b/bin/Newtonsoft.Json.pdb
Binary files differ
diff --git a/bin/OpenSim.exe.config b/bin/OpenSim.exe.config
index 3c7adf5..4e7ef51 100755
--- a/bin/OpenSim.exe.config
+++ b/bin/OpenSim.exe.config
@@ -12,7 +12,7 @@
12 <log4net> 12 <log4net>
13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console"> 13 <appender name="Console" type="OpenSim.Framework.Console.OpenSimAppender, OpenSim.Framework.Console">
14 <layout type="log4net.Layout.PatternLayout"> 14 <layout type="log4net.Layout.PatternLayout">
15 <conversionPattern value="%date{HH:mm:ss} - %message" /> 15 <conversionPattern value="%date{HH:mm:ss,fff} - %message" />
16 </layout> 16 </layout>
17 </appender> 17 </appender>
18 18
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 3e9d376..37c0192 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -1308,10 +1308,13 @@
1308 ;MessagingModule = GroupsMessagingModule 1308 ;MessagingModule = GroupsMessagingModule
1309 ;MessagingEnabled = true 1309 ;MessagingEnabled = true
1310 1310
1311 ; Service connector to Groups Service [Select One] 1311 ; Service connector to Groups Service [Select One] ServicesConnectorModule
1312 ; XmlRpc Service Connector to the Flotsam XmlRpc Groups Service Implementation 1312
1313 ; XmlRpc Service Connector to the Flotsam XmlRpc Groups Service settings
1313 ;ServicesConnectorModule = XmlRpcGroupsServicesConnector 1314 ;ServicesConnectorModule = XmlRpcGroupsServicesConnector
1314 ;XmlRpcServiceURL = http://yourxmlrpcserver.com/xmlrpc.php 1315 ;GroupsServerURI = http://yourxmlrpcserver.com/xmlrpc.php
1316
1317 ; XmlRpc Service Settings
1315 ;XmlRpcServiceReadKey = 1234 1318 ;XmlRpcServiceReadKey = 1234
1316 ;XmlRpcServiceWriteKey = 1234 1319 ;XmlRpcServiceWriteKey = 1234
1317 1320
diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example
index 6da0f1e..cc86501 100644
--- a/bin/config-include/GridCommon.ini.example
+++ b/bin/config-include/GridCommon.ini.example
@@ -15,12 +15,14 @@
15 ; 15 ;
16 InventoryServerURI = "http://myinventoryserver.com:8003" 16 InventoryServerURI = "http://myinventoryserver.com:8003"
17 17
18
18[GridService] 19[GridService]
19 ; 20 ;
20 ; change this to your grid-wide grid server 21 ; change this to your grid-wide grid server
21 ; 22 ;
22 GridServerURI = "http://mygridserver.com:8003" 23 GridServerURI = "http://mygridserver.com:8003"
23 24
25
24[Modules] 26[Modules]
25 ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. 27 ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists.
26 ;; Copy the config .example file into your own .ini file and change configs there 28 ;; Copy the config .example file into your own .ini file and change configs there
diff --git a/prebuild.xml b/prebuild.xml
index 908855f..d2456b2 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -765,7 +765,6 @@
765 <Reference name="OpenSim.Region.Physics.Manager"/> 765 <Reference name="OpenSim.Region.Physics.Manager"/>
766 766
767 <!-- For scripting in funny languages by default --> 767 <!-- For scripting in funny languages by default -->
768 <Reference name="Microsoft.JScript"/>
769 <Reference name="XMLRPC.dll"/> 768 <Reference name="XMLRPC.dll"/>
770 <Reference name="OpenSim.Framework.Communications"/> 769 <Reference name="OpenSim.Framework.Communications"/>
771 <Reference name="Nini.dll" /> 770 <Reference name="Nini.dll" />
@@ -1619,7 +1618,6 @@
1619 <Reference name="GlynnTucker.Cache.dll"/> 1618 <Reference name="GlynnTucker.Cache.dll"/>
1620 1619
1621 <!-- For scripting in funny languages by default --> 1620 <!-- For scripting in funny languages by default -->
1622 <Reference name="Microsoft.JScript"/>
1623 <Reference name="XMLRPC.dll"/> 1621 <Reference name="XMLRPC.dll"/>
1624 <Reference name="OpenSim.Framework.Communications"/> 1622 <Reference name="OpenSim.Framework.Communications"/>
1625 <Reference name="Nini.dll" /> 1623 <Reference name="Nini.dll" />
@@ -1702,7 +1700,6 @@
1702 <Reference name="Mono.Addins.dll" /> 1700 <Reference name="Mono.Addins.dll" />
1703 1701
1704 <!-- For scripting in funny languages by default --> 1702 <!-- For scripting in funny languages by default -->
1705 <Reference name="Microsoft.JScript"/>
1706 <Reference name="XMLRPC.dll"/> 1703 <Reference name="XMLRPC.dll"/>
1707 <Reference name="OpenSim.Framework.Communications"/> 1704 <Reference name="OpenSim.Framework.Communications"/>
1708 <Reference name="Nini.dll" /> 1705 <Reference name="Nini.dll" />
@@ -2707,7 +2704,6 @@
2707 2704
2708 <ReferencePath>../../../../../bin/</ReferencePath> 2705 <ReferencePath>../../../../../bin/</ReferencePath>
2709 <Reference name="System"/> 2706 <Reference name="System"/>
2710 <Reference name="Microsoft.JScript"/>
2711 <Reference name="OpenSim.Framework" /> 2707 <Reference name="OpenSim.Framework" />
2712 <Reference name="OpenSim.Region.Framework" /> 2708 <Reference name="OpenSim.Region.Framework" />
2713 <Reference name="OpenSim.Region.ScriptEngine.Shared"/> 2709 <Reference name="OpenSim.Region.ScriptEngine.Shared"/>
@@ -2844,7 +2840,6 @@
2844 <Reference name="Mono.Addins"/> 2840 <Reference name="Mono.Addins"/>
2845 2841
2846 <!-- For scripting in funny languages by default --> 2842 <!-- For scripting in funny languages by default -->
2847 <Reference name="Microsoft.JScript"/>
2848 <Reference name="XMLRPC.dll"/> 2843 <Reference name="XMLRPC.dll"/>
2849 <Reference name="OpenSim.Framework.Communications"/> 2844 <Reference name="OpenSim.Framework.Communications"/>
2850 <Reference name="Nini.dll" /> 2845 <Reference name="Nini.dll" />
@@ -3306,7 +3301,6 @@
3306 <Reference name="nunit.framework.dll"/> 3301 <Reference name="nunit.framework.dll"/>
3307 3302
3308 <!-- For scripting in funny languages by default --> 3303 <!-- For scripting in funny languages by default -->
3309 <Reference name="Microsoft.JScript"/>
3310 <Reference name="XMLRPC.dll"/> 3304 <Reference name="XMLRPC.dll"/>
3311 <Reference name="OpenSim.Framework.Communications"/> 3305 <Reference name="OpenSim.Framework.Communications"/>
3312 <Reference name="Nini.dll" /> 3306 <Reference name="Nini.dll" />
@@ -3370,7 +3364,6 @@
3370 <Reference name="nunit.framework.dll"/> 3364 <Reference name="nunit.framework.dll"/>
3371 3365
3372 <!-- For scripting in funny languages by default --> 3366 <!-- For scripting in funny languages by default -->
3373 <Reference name="Microsoft.JScript"/>
3374 <Reference name="XMLRPC.dll"/> 3367 <Reference name="XMLRPC.dll"/>
3375 <Reference name="OpenSim.Framework.Communications"/> 3368 <Reference name="OpenSim.Framework.Communications"/>
3376 <Reference name="Nini.dll" /> 3369 <Reference name="Nini.dll" />