/// <summary> /// Overrides Safir.Dob.Requestor. Response for sent request /// </summary> public void OnResponse(Safir.Dob.ResponseProxy responseProxy) { if (responseProxy.IsSuccess) { Capabilities.CalculateSpeedDifferenceResponse response = (Capabilities.CalculateSpeedDifferenceResponse)responseProxy.Response; textboxSpeedDiff.Text = response.SpeedDifference.Val.ToString(); statusStrip.Items["toolStripStatus"].Text = "OK"; } else { statusStrip.Items["toolStripStatus"].Text = "Error in speed service request."; } }
public void OnServiceRequest( Safir.Dob.ServiceRequestProxy serviceRequestProxy, Safir.Dob.ResponseSender responseSender) { float speed, speedProperty, speedDiff; bool bOk = false, bPropertyOk = true; Safir.Dob.Entity ent; Capabilities.CalculateSpeedDifferenceResponse serviceResponse = new Capabilities.CalculateSpeedDifferenceResponse(); // Cast to known type, the CalculateSpeedDiff service. Capabilities.CalculateSpeedDifference receivedService = (Capabilities.CalculateSpeedDifference)serviceRequestProxy.Request; if (!receivedService.ObjectWithSpeed.IsNull() || !receivedService.Speed.IsNull()) { // Retrieve the values. speed = receivedService.Speed.Val; ent = receivedService.ObjectWithSpeed.Obj; // Use the property mechanism to obtain the value from the // ObjectWithSpeed member. Be sure to check the mapping first. // Note, that this is just an example of how to use properties // and it has nothing to do with the service mechanism. if (Capabilities.SpeedObjectProperty.HasProperty(ent)) { // Check Speed property. if (!Capabilities.SpeedObjectProperty.IsNullSpeedMember(ent)) { // Retrieve the value from the entity by using the property. speedProperty = Capabilities.SpeedObjectProperty.GetSpeedMember(ent); speedDiff = speedProperty - speed; serviceResponse.SpeedDifference.Val = speedDiff; bOk = true; } else { bPropertyOk = false; } } else { bPropertyOk = false; } } // Send response. if (bOk) { responseSender.Send(serviceResponse); } else if (!bPropertyOk) { // Respond with an error list that points out the member ObjectWithSpeed // as erroneous. This is to examplify usage of an error list. Safir.Dob.ErrorListResponse errorListResponse = new Safir.Dob.ErrorListResponse(); // Insert only one error in the list. errorListResponse.NumberOfErrors.Val = 1; // The error to be inserted in the error list. Safir.Dob.ResponseErrorInfo error = new Safir.Dob.ResponseErrorInfo(); error.Member.Val = Capabilities.CalculateSpeedDifference.ObjectWithSpeedMemberIndex; error.Code.Val = Safir.Dob.ResponseGeneralErrorCodes.SafirReqErr; // Insert error in list. errorListResponse.Error[0].Obj = error; responseSender.Send(errorListResponse); } else { // Respond with a general error. Safir.Dob.ErrorResponse errorResponse = new Safir.Dob.ErrorResponse(); errorResponse.Code.Val = Safir.Dob.ResponseGeneralErrorCodes.SafirReqErr; responseSender.Send(errorResponse); } }