internal ReturnCode init(IntPtr uParticipant, SchedulingQosPolicy scheduling) { ReturnCode result = DDS.ReturnCode.Ok; Debug.Assert(uParticipant != IntPtr.Zero); this.SchedulingPolicy = scheduling; this.StackSize = DDS.OpenSplice.Common.ListenerDispatcher.StackSize(uParticipant); IntPtr uListener = User.Listener.New(uParticipant); if (uListener == IntPtr.Zero) { result = DDS.ReturnCode.OutOfResources; } else { base.init(uListener, false); } if (result != DDS.ReturnCode.Ok) { deinit(); } return(result); }
private static ThreadPriority SchedulingPriority(SchedulingQosPolicy SchedulingPolicy) { int Priority = (int)ThreadPriority.Normal; if (SchedulingPolicy.SchedulingClass.Kind != DDS.SchedulingClassQosPolicyKind.ScheduleDefault) { Priority = SchedulingPolicy.SchedulingPriority; if (SchedulingPolicy.SchedulingPriorityKind.Kind == DDS.SchedulingPriorityQosPolicyKind.PriorityRelative) { Priority = (int)Thread.CurrentThread.Priority; } if (Priority < (int)ThreadPriority.Lowest) { Priority = (int)ThreadPriority.Lowest; } else if (Priority > (int)ThreadPriority.Highest) { Priority = (int)ThreadPriority.Highest; } } return((ThreadPriority)Priority); }
internal ReturnCode SetScheduling(SchedulingQosPolicy SchedulingPolicy) { ReturnCode result = DDS.ReturnCode.Ok; ThreadPriority Priority, _Priority; SchedulingQosPolicy _SchedulingPolicy; lock (this) { Priority = SchedulingPriority(SchedulingPolicy); _Priority = SchedulingPriority(this.SchedulingPolicy); _SchedulingPolicy = this.SchedulingPolicy; this.SchedulingPolicy = SchedulingPolicy; if (Priority != _Priority) { result = Stop(); if (result == DDS.ReturnCode.Ok && State != ListenerThreadState.STOPPED) { result = DDS.ReturnCode.PreconditionNotMet; } else if (Observables.Count > 0) { result = Start(); } if (result != DDS.ReturnCode.Ok) { this.SchedulingPolicy = _SchedulingPolicy; } } } return(result); }
internal ReturnCode GetScheduling(ref SchedulingQosPolicy SchedulingPolicy) { lock (this) { SchedulingPolicy = this.SchedulingPolicy; } return(DDS.ReturnCode.Ok); }
internal static void CopyOut(v_schedulePolicyI_s from, ref SchedulingQosPolicy to) { if (to == null) { to = new SchedulingQosPolicy(); } // Get scheduling_class field to.SchedulingClass.Kind = (SchedulingClassQosPolicyKind)from.v.kind; // Get scheduling_priority_kind field to.SchedulingPriorityKind.Kind = (SchedulingPriorityQosPolicyKind)from.v.priorityKind; // Get scheduling_priority field to.SchedulingPriority = from.v.priority; }
internal static int countErrors(SchedulingQosPolicy o) { int errorCount = 0; if (o.SchedulingClass == null || o.SchedulingClass.Kind > SchedulingClassQosPolicyKind.ScheduleRealtime) { errorCount++; } if (o.SchedulingPriorityKind == null || o.SchedulingPriorityKind.Kind > SchedulingPriorityQosPolicyKind.PriorityAbsolute) { errorCount++; } return(errorCount); }
internal static DDS.ReturnCode CopyIn(SchedulingQosPolicy from, ref v_schedulePolicyI_s to) { DDS.ReturnCode result = DDS.ReturnCode.Ok; if (from != null) { // Set scheduling_class field to.v.kind = (V_SCHEDULEKIND)from.SchedulingClass.Kind; // Set scheduling_priority_kind field to.v.priorityKind = (V_SCHEDULEPRIORITYKIND)from.SchedulingPriorityKind.Kind; // Set scheduling_priority field to.v.priority = from.SchedulingPriority; } else { result = DDS.ReturnCode.BadParameter; ReportStack.Report(result, "SchedulingQosPolicy attribute may not be a null pointer."); } return(result); }
internal static void CopyOut(IntPtr from, ref SchedulingQosPolicy to, int offset) { if (to == null) to = new SchedulingQosPolicy(); // Get scheduling_class field to.SchedulingClass.Kind = (SchedulingClassQosPolicyKind) BaseMarshaler.ReadInt32(from, offset + offset_scheduling_class); // Get scheduling_priority_kind field to.SchedulingPriorityKind.Kind = (SchedulingPriorityQosPolicyKind) BaseMarshaler.ReadInt32(from, offset + offset_scheduling_priority_kind); // Get scheduling_priority field to.SchedulingPriority = BaseMarshaler.ReadInt32(from, offset + offset_scheduling_priority); }
internal void CopyOut(ref SchedulingQosPolicy to) { CopyOut(GapiPtr, ref to, 0); }
internal static DDS.ReturnCode CopyIn(SchedulingQosPolicy from, IntPtr to, int offset) { DDS.ReturnCode result = DDS.ReturnCode.Ok; if (from != null) { // Set scheduling_class field BaseMarshaler.Write(to, offset + offset_scheduling_class, (int)from.SchedulingClass.Kind); // Set scheduling_priority_kind field BaseMarshaler.Write(to, offset + offset_scheduling_priority_kind, (int)from.SchedulingPriorityKind.Kind); // Set scheduling_priority field BaseMarshaler.Write(to, offset + offset_scheduling_priority, from.SchedulingPriority); } else { result = DDS.ReturnCode.BadParameter; DDS.OpenSplice.OS.Report( DDS.OpenSplice.ReportType.OS_ERROR, "DDS.OpenSplice.CustomMarshalers.SchedulingQosPolicyMarshaler.CopyIn", "DDS/OpenSplice/CustomMarshalers/QosContainedMarshalers.cs", DDS.ErrorCode.InvalidValue, "SchedulingQosPolicy attribute may not be a null pointer."); } return result; }
internal DDS.ReturnCode CopyIn(SchedulingQosPolicy from) { cleanupRequired = true; return CopyIn(from, GapiPtr, 0); }