diff --git a/src/Gemstone.Timeseries/Adapters/AdapterProtocolAttribute.cs b/src/Gemstone.Timeseries/Adapters/AdapterProtocolAttribute.cs index cb8ea773e..c870b53e5 100644 --- a/src/Gemstone.Timeseries/Adapters/AdapterProtocolAttribute.cs +++ b/src/Gemstone.Timeseries/Adapters/AdapterProtocolAttribute.cs @@ -121,15 +121,19 @@ public class AdapterProtocolAttribute : Attribute public string[] LockedPhasorFields { get; } /// - /// Creates a new instance of the class. - /// - /// Acronym for the adapter protocol. - /// Name of the adapter protocol. - /// Type of the adapter protocol. - /// UI Visibility of the protocol. - /// Determines if the adapter protocol supports a connection test. - /// Load order of the adapter protocol. - /// Applications that support this protocol in the UI. + /// Initializes a new instance of the class with the specified parameters. + /// + /// The unique acronym representing the adapter protocol. + /// The display name of the adapter protocol. + /// The type of the adapter protocol, indicating its purpose (e.g., or ). + /// The visibility of the protocol in the user interface, defined by . + /// A value indicating whether the adapter protocol supports connection testing. Defaults to true. + /// The load order of the adapter protocol, used to determine initialization sequence. Defaults to 0. + /// An array of values specifying the applications that support this protocol in the user interface. Defaults to a predefined set of applications. + /// An array of field names that are locked for device configuration. Defaults to an empty array if not specified. + /// An array of field names that are locked for measurement configuration. Defaults to an empty array if not specified. + /// An array of field names that are locked for phasor configuration. Defaults to an empty array if not specified. + /// Thrown when or is null, empty, or consists only of white-space characters. public AdapterProtocolAttribute( string acronym, string name, @@ -137,10 +141,10 @@ public AdapterProtocolAttribute( UIVisibility visibility, bool supportsConnectionTest = true, int loadOrder = 0, - Application[] applications = null, - string[] lockedDeviceFields = null, - string[] lockedMeasurementFields = null, - string[] lockedPhasorFields = null) + Application[]? applications = null, + string[]? lockedDeviceFields = null, + string[]? lockedMeasurementFields = null, + string[]? lockedPhasorFields = null) { ArgumentException.ThrowIfNullOrWhiteSpace(acronym); ArgumentException.ThrowIfNullOrWhiteSpace(name); diff --git a/src/Gemstone.Timeseries/BufferBlockMeasurement.cs b/src/Gemstone.Timeseries/BufferBlockMeasurement.cs index ecaea9033..3ee60e0aa 100644 --- a/src/Gemstone.Timeseries/BufferBlockMeasurement.cs +++ b/src/Gemstone.Timeseries/BufferBlockMeasurement.cs @@ -78,5 +78,36 @@ public BufferBlockMeasurement(byte[] buffer, int startIndex, int length) /// public int Length { get; } + /// + /// Gets or sets a value indicating whether reception of this buffer block must be acknowledged + /// by the subscriber with a ConfirmBufferBlock command. + /// + /// + /// + /// Maps to IEEE Std 2664-2024 Table 8 bit 0x01 (REQUIRE CONFIRMATION) on the wire. + /// Default value is true, preserving STTP's traditional retransmission semantics where + /// the publisher caches each buffer block until acknowledged and retransmits on timeout. + /// + /// + /// When set to false, the buffer block is fire-and-forget: no retransmission cache entry + /// is added, the retransmission timer is not (re)started, and the subscriber does not emit a + /// confirmation. Useful for high-rate buffer-block streams over reliable transports (TCP) + /// where the round-trip acknowledgement overhead is unnecessary. + /// + /// + public bool RequireConfirmation { get; set; } = true; + + /// + /// Gets or sets the raw buffer-block flag byte as it appeared on the wire (IEEE Std 2664-2024 + /// Table 8). On receive, this carries the publisher's full intent (REQUIRE CONFIRMATION, + /// COMPRESSED, CACHE INDEX, etc.); on send, this field is unused by the wire codec - the codec + /// constructs the byte from and other per-block state. + /// + /// + /// Stored as a raw so this assembly need not take a dependency on the STTP + /// flag enum. Cast to BufferBlockFlags at the call site if structured inspection is needed. + /// + public byte Flags { get; set; } + #endregion }