public void SendInstantMessage(
     ScriptInstance instance,
     ViewerAgentAccessor agent,
     int isFromGroup,
     LSLKey toAgent,
     int parentEstateID,
     LSLKey regionID,
     Vector3 position,
     int isOffline,
     int dialog,
     LSLKey id,
     long timestamp,
     string fromAgentName,
     string message,
     ByteArrayApi.ByteArray binaryBucket)
 {
     lock (instance)
     {
         ViewerConnection vc;
         ViewerCircuit    viewerCircuit;
         if (m_Clients.TryGetValue(agent.AgentID, out vc) &&
             vc.ViewerCircuits.TryGetValue((uint)agent.CircuitCode, out viewerCircuit))
         {
             viewerCircuit.SendMessage(new ImprovedInstantMessage
             {
                 AgentID        = viewerCircuit.AgentID,
                 SessionID      = viewerCircuit.SessionID,
                 FromGroup      = isFromGroup != 0,
                 ToAgentID      = toAgent.AsUUID,
                 ParentEstateID = (uint)parentEstateID,
                 RegionID       = regionID.AsUUID,
                 Position       = position,
                 IsOffline      = isOffline != 0,
                 Dialog         = (GridInstantMessageDialog)dialog,
                 ID             = id.AsUUID,
                 Timestamp      = Date.UnixTimeToDateTime((ulong)timestamp),
                 FromAgentName  = fromAgentName,
                 Message        = message,
                 BinaryBucket   = binaryBucket.Data
             });
         }
     }
 }
示例#2
0
        public HashtableApi.Hashtable CapsUpdateTaskInventory(ScriptInstance instance, string uri, LSLKey objectid, LSLKey itemid, string contentType, ByteArrayApi.ByteArray assetData)
        {
            HashtableApi.Hashtable res = new HashtableApi.Hashtable();
            lock (instance)
            {
                Map result;
                using (Stream s = new HttpClient.Post(uri,
                                                      new HttpClient.LlsdXmlRequest(new Map
                {
                    { "task_id", objectid.AsUUID },
                    { "item_id", itemid.AsUUID },
                }))
                {
                    TimeoutMs = 20000
                }.ExecuteStreamRequest())
                {
                    result = (Map)LlsdXml.Deserialize(s);
                }

                res["result"] = result["state"].ToString();
                if (result["state"].ToString() == "upload")
                {
                    string uploader_uri = res["uploader"].ToString();

                    using (Stream s = new HttpClient.Post(
                               uploader_uri,
                               contentType,
                               assetData.Length, (Stream sd) => sd.Write(assetData.Data, 0, assetData.Length))
                    {
                        TimeoutMs = 20000
                    }.ExecuteStreamRequest())
                    {
                        result = (Map)LlsdXml.Deserialize(s);
                    }
                    res["result"] = result["state"].ToString();
                    if (result["state"].ToString() == "complete")
                    {
                        res["assetid"] = new LSLKey(result["new_asset"].AsUUID);
                    }
                    if (result.ContainsKey("compiled"))
                    {
                        res["compiled"] = ((bool)result["compiled"].AsBoolean).ToLSLBoolean();
                    }
                    if (result.ContainsKey("errors"))
                    {
                        res.Add("errors", (AnArray)result["errors"]);
                    }
                }
            }

            return(res);
        }