internal override CallResult Call() { if (link.connection.dropped) { return(CallResult.Invalid); } ServiceCallbackHelperParams <MReq, MRes> parms = new ServiceCallbackHelperParams <MReq, MRes> { request = new MReq(), response = new MRes(), connection_header = link.connection.header.Values }; parms.request.Deserialize(buffer); try { bool ok = isp.helper.call(parms); link.processResponse(parms.response, ok); } catch (Exception e) { string woops = "Exception thrown while processing service call: " + e; ROS.Error(woops); link.processResponse(woops, false); return(CallResult.Invalid); } return(CallResult.Success); }
public virtual MReq deserialize <MReq, MRes>(ServiceCallbackHelperParams <MReq, MRes> parms) where MReq : IRosMessage where MRes : IRosMessage { //EDB.WriteLine("ISubscriptionCallbackHelper: deserialize"); IRosMessage msg = ROS.MakeMessage(type); assignSubscriptionConnectionHeader(ref msg, parms.connection_header); MReq t = (MReq)msg; t.Deserialize(parms.response.Serialized); return(t); //return SerializationHelper.Deserialize<T>(parms.buffer); }
internal bool call(ServiceCallbackHelperParams <MReq, MRes> parms) { return(_callback.Invoke(parms.request, ref parms.response)); }