Пример #1
0
            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);
            }
Пример #2
0
        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);
        }
Пример #3
0
 internal bool call(ServiceCallbackHelperParams <MReq, MRes> parms)
 {
     return(_callback.Invoke(parms.request, ref parms.response));
 }