/// <summary>
/// Retrieves information on resources used by the parcel
/// </summary>
/// <param name="parcelID">UUID of the parcel</param>
/// <param name="getDetails">Should per object resource usage be requested</param>
/// <param name="callback">Callback invoked when the request is complete</param>
public void GetParcelResouces(UUID parcelID, bool getDetails, LandResourcesCallback callback)
{
try
{
Uri url = Client.Network.CurrentSim.Caps.CapabilityURI("LandResources");
CapsClient request = new CapsClient(url);
request.OnComplete += delegate(CapsClient client, OSD result, Exception error)
{
try
{
if (result == null || error != null)
{
callback(false, null);
}
LandResourcesMessage response = new LandResourcesMessage();
response.Deserialize((OSDMap)result);
CapsClient summaryRequest = new CapsClient(response.ScriptResourceSummary);
OSD summaryResponse = summaryRequest.GetResponse(Client.Settings.CAPS_TIMEOUT);
LandResourcesInfo res = new LandResourcesInfo();
res.Deserialize((OSDMap)summaryResponse);
if (response.ScriptResourceDetails != null && getDetails)
{
CapsClient detailRequest = new CapsClient(response.ScriptResourceDetails);
OSD detailResponse = detailRequest.GetResponse(Client.Settings.CAPS_TIMEOUT);
res.Deserialize((OSDMap)detailResponse);
}
callback(true, res);
}
catch (Exception ex)
{
Logger.Log("Failed fetching land resources", Helpers.LogLevel.Error, Client, ex);
callback(false, null);
}
};
LandResourcesRequest param = new LandResourcesRequest();
param.ParcelID = parcelID;
request.BeginGetResponse(param.Serialize(), OSDFormat.Xml, Client.Settings.CAPS_TIMEOUT);
}
catch (Exception ex)
{
Logger.Log("Failed fetching land resources:", Helpers.LogLevel.Error, Client, ex);
callback(false, null);
}
}