public static void Request(long timeoutInMs, string eventType, PromiseHandler promiseHandler, params object[] args) { RequestData request; if (s_Requests.TryGetValue(eventType, out request)) { request.promises.Add(promiseHandler); return; } request = new RequestData { eventType = eventType, promises = new List <PromiseHandler>(1), timeoutInMs = timeoutInMs }; request.promises.Add(promiseHandler); var req = CreateRequestMsg(kRequest, eventType, -1, args); var requestId = m_Client.NewRequestId(); req["requestId"] = requestId; if (HasHandlers(eventType)) { var results = NotifyLocalListeners(eventType, args, false); var exception = results.FirstOrDefault(r => r is Exception); if (exception != null) { Reject(request, exception as Exception); } else { if (results.Length == 1) { Resolve(request, results); } else { Resolve(request, results); } } } else { request.id = requestId; request.offerStartTime = Stopwatch.GetTimestamp(); s_Requests.Add(eventType, request); request.data = Json.Serialize(args); var msg = Json.Serialize(req); m_Client.Send(msg); } }
public static void Request(string eventType, PromiseHandler promiseHandler, object[] args, long timeoutInMs = kRequestDefaultTimeout, EventDataSerialization eventDataSerialization = EventDataSerialization.JsonUtility) { RequestData request; if (s_Requests.TryGetValue(eventType, out request)) { request.promises.Add(promiseHandler); return; } request = new RequestData { eventType = eventType, promises = new List <PromiseHandler>(1), timeoutInMs = timeoutInMs }; request.promises.Add(promiseHandler); if (HasHandlers(eventType)) { var results = NotifyLocalListeners(eventType, args, false); var exception = results.FirstOrDefault(r => r is Exception); if (exception != null) { Reject(request, exception as Exception); } else { if (results.Length == 1) { Resolve(request, results); } else { Resolve(request, results); } } } else { request.offerStartTime = Stopwatch.GetTimestamp(); var requestId = m_Client.NewRequestId(); request.id = requestId; var msg = CreateRequest(kRequest, eventType, -1, requestId, args, eventDataSerialization); m_Client.Send(Json.Serialize(msg)); s_Requests.Add(eventType, request); request.data = Json.Serialize(msg["data"]); request.dataInfos = (object[])msg["dataInfos"]; } }