コード例 #1
0
        internal static int countErrors(ResourceLimitsQosPolicy o)
        {
            int errorCount = 0;

            if (o.MaxSamples < 0 &&
                o.MaxSamples != Length.Unlimited)
            {
                errorCount++;
            }
            if (o.MaxInstances < 0 &&
                o.MaxInstances != Length.Unlimited)
            {
                errorCount++;
            }
            if (o.MaxSamplesPerInstance < 0 &&
                o.MaxSamplesPerInstance != Length.Unlimited)
            {
                errorCount++;
            }
            if (o.MaxSamples != Length.Unlimited &&
                o.MaxSamplesPerInstance != Length.Unlimited &&
                o.MaxSamples < o.MaxSamplesPerInstance)
            {
                errorCount++;
            }

            return(errorCount);
        }
コード例 #2
0
 internal static void CopyOut(v_resourcePolicyI_s from, ref ResourceLimitsQosPolicy to)
 {
     if (to == null)
     {
         to = new ResourceLimitsQosPolicy();
     }
     to.MaxSamples            = from.v.max_samples;
     to.MaxInstances          = from.v.max_instances;
     to.MaxSamplesPerInstance = from.v.max_samples_per_instance;
 }
コード例 #3
0
        public ReturnCode WaitForHistoricalDataWithCondition(
            string filterExpression,
            string[] filterParameters,
            Time minSourceTimeStamp,
            Time maxSourceTimeStamp,
            ResourceLimitsQosPolicy resourceLimits,
            Duration maxWait)
        {
            ReturnCode result;

            ReportStack.Start();
            if (QosManager.countErrors(minSourceTimeStamp) > 0 ||
                QosManager.countErrors(maxSourceTimeStamp) > 0 ||
                QosManager.countErrors(resourceLimits) > 0 ||
                QosManager.countErrors(maxWait) > 0)
            {
                result = DDS.ReturnCode.BadParameter;
                ReportStack.Report(result, "Invalid function parameter(s) passed.");
            }
            else
            {
                if (this.rlReq_isAlive)
                {
                    using (SequenceStringToArrMarshaler marshaler = new SequenceStringToArrMarshaler())
                    {
                        result = marshaler.CopyIn(filterParameters);
                        if (result == ReturnCode.Ok)
                        {
                            uint length = filterParameters == null ? 0 : (uint)filterParameters.Length;
                            result = uResultToReturnCode(
                                User.DataReader.WaitForHistoricalDataWithCondition(
                                    rlReq_UserPeer,
                                    filterExpression,
                                    marshaler.UserPtr,
                                    length,
                                    minSourceTimeStamp.OsTimeW,
                                    maxSourceTimeStamp.OsTimeW,
                                    resourceLimits.MaxSamples,
                                    resourceLimits.MaxInstances,
                                    resourceLimits.MaxSamplesPerInstance,
                                    maxWait.OsDuration));
                        }
                    }
                }
                else
                {
                    result = DDS.ReturnCode.AlreadyDeleted;
                }
            }
            ReportStack.Flush(this, result != ReturnCode.Ok);

            return(result);
        }
コード例 #4
0
 internal static DDS.ReturnCode CopyIn(ResourceLimitsQosPolicy from, ref v_resourcePolicyI_s to)
 {
     DDS.ReturnCode result = DDS.ReturnCode.Ok;
     if (from != null)
     {
         to.v.max_samples              = from.MaxSamples;
         to.v.max_instances            = from.MaxInstances;
         to.v.max_samples_per_instance = from.MaxSamplesPerInstance;
     }
     else
     {
         result = DDS.ReturnCode.BadParameter;
         ReportStack.Report(result, "ResourceLimitsQosPolicy attribute may not be a null pointer.");
     }
     return(result);
 }
コード例 #5
0
 internal static void CopyOut(IntPtr from, ref ResourceLimitsQosPolicy to, int offset)
 {
 	if (to == null) to = new ResourceLimitsQosPolicy();
     to.MaxSamples = BaseMarshaler.ReadInt32(from, offset + offset_max_samples);
     to.MaxInstances = BaseMarshaler.ReadInt32(from, offset + offset_max_instances);
     to.MaxSamplesPerInstance = BaseMarshaler.ReadInt32(from, offset + offset_max_samples_per_instance);
 }
コード例 #6
0
 internal void CopyOut(ref ResourceLimitsQosPolicy to)
 {
     CopyOut(GapiPtr, ref to, 0);
 }
コード例 #7
0
 internal static DDS.ReturnCode CopyIn(ResourceLimitsQosPolicy from, IntPtr to, int offset)
 {
     DDS.ReturnCode result = DDS.ReturnCode.Ok;
     if (from != null) {
         BaseMarshaler.Write(to, offset + offset_max_samples, from.MaxSamples);
         BaseMarshaler.Write(to, offset + offset_max_instances, from.MaxInstances);
         BaseMarshaler.Write(to, offset + offset_max_samples_per_instance, from.MaxSamplesPerInstance);
     } else {
         result = DDS.ReturnCode.BadParameter;
         DDS.OpenSplice.OS.Report(
                 DDS.OpenSplice.ReportType.OS_ERROR,
                 "DDS.OpenSplice.CustomMarshalers.ResourceLimitsQosPolicyMarshaler.CopyIn",
                 "DDS/OpenSplice/CustomMarshalers/QosContainedMarshalers.cs",
                 DDS.ErrorCode.InvalidValue,
                 "ResourceLimitsQosPolicy attribute may not be a null pointer.");
     }
     return result; 
 }
コード例 #8
0
 internal DDS.ReturnCode CopyIn(ResourceLimitsQosPolicy from)
 {
     cleanupRequired = true;
     return CopyIn(from, GapiPtr, 0);
 }
コード例 #9
0
 public ModifiableResourceLimitsQosPolicy CopyFrom(ResourceLimitsQosPolicy other)
 {
     return new ModifiableResourceLimitsQosPolicyImpl(other);
 }
コード例 #10
0
 public ModifiableResourceLimitsQosPolicyImpl(ResourceLimitsQosPolicy qos)
     : base(qos.GetMaxSamples(),qos.GetMaxInstances(),qos.GetMaxSamplesPerInstance(),qos.GetBootstrap())
 {
 }