private Hashtable sendInternal(Hashtable data) { String requestId = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond).ToString(); data["requestId"] = requestId; GSAutoResetEvent messageReceiveEvent = new GSAutoResetEvent(false); pendingRequests.Add(requestId, messageReceiveEvent); sendNoWait(data); if (!messageReceiveEvent.WaitOne(5000)) { Hashtable errors = new Hashtable(); errors.Add("timeout", "No response within 5 secs"); Debug.Log("No response within 5 secs"); pendingRequests.Remove(requestId); Hashtable error = new Hashtable(); error.Add("error", errors); return(error); } pendingRequests.Remove(requestId); return(messageReceiveEvent.response); }
private void completeResponse(Hashtable response) { String requestId = response ["requestId"].ToString(); if (requestId != null) { if (pendingRequests.ContainsKey(requestId)) { GSAutoResetEvent pending = pendingRequests[requestId]; if (pending != null) { pending.populateAndSet(response); } } } }