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; }
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); } }
//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); } }
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); }
// 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); } }
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); }
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(); } }
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); } }
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; }
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(); } }
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; } } }
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); } } }
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); }
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; } }