protected override void InvocationResult(params object[] args) { IRTRequest request = parent.HandleResult(args, parent.sentRequests, "result"); if (request != null) #if NET_35 { parent.sentRequests.Remove(request.Id); } #else { parent.sentRequests.TryRemove(request.Id, out _); } #endif }
private IRTRequest HandleResult <T>(Object[] args, IDictionary <String, T> requestMap, String resultKey) where T : IRTRequest { if (args == null || args.Length < 1) { Log.log(Backendless.BACKENDLESSLOG, "subscription result is null or empty"); return(null); } AnonymousObject result = (AnonymousObject)WeborbSerializationHelper.Deserialize((byte[])args[0]); String id = WeborbSerializationHelper.AsString(result, "id"); Log.log(Backendless.BACKENDLESSLOG, String.Format("Got result for subscription {0}", id)); IRTRequest request = requestMap[id]; if (request == null) { Log.log(Backendless.BACKENDLESSLOG, String.Format("There is no handler for subscription {0}", id)); return(null); } Object error = WeborbSerializationHelper.AsObject(result, "error"); if (error != null) { Log.log(Backendless.BACKENDLESSLOG, String.Format("got error {0}", error)); BackendlessFault fault = new BackendlessFault(error.ToString()); request.Callback.errorHandler(fault); return(request); } IAdaptingType data = WeborbSerializationHelper.AsAdaptingType(result, resultKey); request.Callback.responseHandler(data); return(request); }