Exemplo n.º 1
1
        public UUID RegisterRequest(UUID primID, UUID itemID,
                                      string identifier)
        {
            DataserverRequest ds = new DataserverRequest();

            ds.primID = primID;
            ds.itemID = itemID;

            ds.ID = UUID.Random();
            ds.handle = identifier;

            ds.startTime = DateTime.Now;
            ds.IsCompleteAt = DateTime.Now.AddHours(1);
            ds.Reply = "";

            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                    return UUID.Zero;

                DataserverRequests[identifier] = ds;
            }

            //Make sure that the cmd handler thread is running
            m_ScriptEngine.MaintenanceThread.PokeThreads ();

            return ds.ID;
        }
Exemplo n.º 2
0
        public UUID RegisterRequest(uint localID, UUID itemID, Action <string> action)
        {
            lock (DataserverRequests)
            {
                string identifier = UUID.Random().ToString();

                DataserverRequest ds = new DataserverRequest()
                {
                    localID = localID,
                    itemID  = itemID,

                    ID     = UUID.Random(),
                    handle = identifier,

                    startTime = DateTime.MaxValue,
                    action    = action
                };

                DataserverRequests[identifier] = ds;
                if (action != null)
                {
                    m_WorkPool.Enqueue(identifier);
                }

                return(ds.ID);
            }
        }
Exemplo n.º 3
0
        //legacy
        public UUID RegisterRequest(uint localID, UUID itemID, string identifier)
        {
            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequest ds = new DataserverRequest()
                {
                    localID = localID,
                    itemID  = itemID,

                    ID     = UUID.Random(),
                    handle = identifier,

                    startTime = DateTime.UtcNow,
                    action    = null
                };

                DataserverRequests[identifier] = ds;
                return(ds.ID);
            }
        }
Exemplo n.º 4
0
        public UUID RegisterRequest(UUID primID, UUID itemID,
                                    string identifier)
        {
            DataserverRequest ds = new DataserverRequest();

            ds.primID = primID;
            ds.itemID = itemID;

            ds.ID     = UUID.Random();
            ds.handle = identifier;

            ds.startTime    = DateTime.Now;
            ds.IsCompleteAt = DateTime.Now.AddHours(1);
            ds.Reply        = "";

            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequests[identifier] = ds;
            }

            return(ds.ID);
        }
Exemplo n.º 5
0
        // action, if provided, is executed async
        // its code pattern should be:
        //Action<string> act = eventID =>
        //{
        //     need operations to get reply string
        //  m_AsyncCommands.DataserverPlugin.DataserverReply(eventID, reply);
        //}
        // eventID is the event id, provided by this on Invoque
        // see ProcessActions below

        // temporary don't use
        public UUID RegisterRequest(uint localID, UUID itemID, string identifier, Action <string> action)
        {
            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequest ds = new DataserverRequest()
                {
                    localID = localID,
                    itemID  = itemID,

                    ID     = UUID.Random(),
                    handle = identifier,

                    startTime = DateTime.UtcNow,
                    action    = action
                };

                DataserverRequests[identifier] = ds;
                if (action != null)
                {
                    m_WorkPool.Enqueue(identifier);
                }

                return(ds.ID);
            }
        }
Exemplo n.º 6
0
        public UUID RegisterRequest(UUID primID, UUID itemID,
                                    string identifier)
        {
            DataserverRequest ds = new DataserverRequest();

            ds.primID = primID;
            ds.itemID = itemID;

            ds.ID     = UUID.Random();
            ds.handle = identifier;

            ds.startTime    = DateTime.Now;
            ds.IsCompleteAt = DateTime.Now.AddHours(1);
            ds.Reply        = "";

            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequests[identifier] = ds;
            }

            //Make sure that the cmd handler thread is running
            m_ScriptEngine.MaintenanceThread.PokeThreads();

            return(ds.ID);
        }
Exemplo n.º 7
0
        public UUID RegisterRequest(uint localID, UUID itemID,
                                    string identifier)
        {
            DataServerRequestsRwLock.AcquireWriterLock(-1);
            try
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequest ds = new DataserverRequest();

                ds.localID = localID;
                ds.itemID  = itemID;

                ds.ID     = UUID.Random();
                ds.handle = identifier;

                ds.startTime = DateTime.Now;

                DataserverRequests[identifier] = ds;

                return(ds.ID);
            }
            finally
            {
                DataServerRequestsRwLock.ReleaseWriterLock();
            }
        }
Exemplo n.º 8
0
        public UUID RegisterRequest(uint localID, UUID itemID,
                                    string identifier)
        {
            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                {
                    return(UUID.Zero);
                }

                DataserverRequest ds = new DataserverRequest();

                ds.localID = localID;
                ds.itemID  = itemID;

                ds.ID     = UUID.Random();
                ds.handle = identifier;

                ds.startTime = DateTime.Now;

                DataserverRequests[identifier] = ds;

                return(ds.ID);
            }
        }
Exemplo n.º 9
0
        public UUID RegisterRequest(UUID primID, UUID itemID,
                                      string identifier)
        {
            DataserverRequest ds = new DataserverRequest();

            ds.primID = primID;
            ds.itemID = itemID;

            ds.ID = UUID.Random();
            ds.handle = identifier;

            ds.startTime = DateTime.Now;
            ds.IsCompleteAt = DateTime.Now.AddHours(1);
            ds.Reply = "";

            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                    return UUID.Zero;

                DataserverRequests[identifier] = ds;
            }

            return ds.ID;
        }
Exemplo n.º 10
0
        public UUID RegisterRequest(uint localID, UUID itemID,
                                      string identifier)
        {
            DataServerRequestsRwLock.AcquireWriterLock(-1);
            try
            {
                if (DataserverRequests.ContainsKey(identifier))
                    return UUID.Zero;

                DataserverRequest ds = new DataserverRequest();

                ds.localID = localID;
                ds.itemID = itemID;

                ds.ID = UUID.Random();
                ds.handle = identifier;

                ds.startTime = DateTime.Now;

                DataserverRequests[identifier] = ds;

                return ds.ID;
            }
            finally
            {
                DataServerRequestsRwLock.ReleaseWriterLock();
            }
        }
Exemplo n.º 11
0
 internal void AddReply(string handle, string reply, int millisecondsToWait)
 {
     lock (DataserverRequests)
     {
         DataserverRequest request = null;
         if (DataserverRequests.TryGetValue(handle, out request))
         {
             //Wait for the value to be returned in LSL_Api
             request.IsCompleteAt = DateTime.Now.AddSeconds(millisecondsToWait / 1000 + 0.1);
             request.Reply        = reply;
         }
     }
 }
Exemplo n.º 12
0
 internal void AddReply(string handle, string reply, int millisecondsToWait)
 {
     lock (DataserverRequests)
     {
         DataserverRequest request = null;
         if (DataserverRequests.TryGetValue(handle, out request))
         {
             //Wait for the value to be returned in LSL_Api
             request.IsCompleteAt = DateTime.Now.AddSeconds((millisecondsToWait / (double)1000) + 0.1);
             request.Reply        = reply;
             //Make sure that the cmd handler thread is running
             m_ScriptEngine.MaintenanceThread.PokeThreads(request.itemID);
         }
     }
 }
Exemplo n.º 13
0
        public object ProcessActions(object st)
        {
            string id = st as string;

            if (string.IsNullOrEmpty(id))
            {
                return(null);
            }

            DataserverRequest ds = null;

            lock (DataserverRequests)
            {
                if (!DataserverRequests.TryGetValue(id, out ds))
                {
                    return(null);
                }
            }

            if (ds == null || ds.action == null)
            {
                return(null);
            }
            try
            {
                ds.action.Invoke(ds.handle);
            }
            catch { }

            ds.action = null;
            lock (DataserverRequests)
            {
                if (DataserverRequests.TryGetValue(id, out ds))
                {
                    DataserverRequests.Remove(id);
                }
            }

            return(null);
        }
Exemplo n.º 14
0
        public UUID RegisterRequest(uint localID, UUID itemID,
                                      string identifier)
        {
            lock (DataserverRequests)
            {
                if (DataserverRequests.ContainsKey(identifier))
                    return UUID.Zero;

                DataserverRequest ds = new DataserverRequest();

                ds.localID = localID;
                ds.itemID = itemID;

                ds.ID = UUID.Random();
                ds.handle = identifier;

                ds.startTime = DateTime.Now;

                DataserverRequests[identifier] = ds;

                return ds.ID;
            }
        }