//******************************************************************************************************
// ChannelFrameParsingStateBase.cs - Gbtc
//
// Copyright © 2012, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may
// not use this file except in compliance with the License. You may obtain a copy of the License at:
//
// http://www.opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 01/14/2005 - J. Ritchie Carroll
// Generated original version of source code.
// 09/15/2009 - Stephen C. Wills
// Added new header and license agreement.
// 10/5/2012 - Gavin E. Holden
// Added new header and license agreement.
// 12/17/2012 - Starlynn Danyelle Gilliam
// Modified Header.
//
//******************************************************************************************************
using System;
namespace GSF.PhasorProtocols
{
///
/// Represents the protocol independent common implementation of the parsing state used by any .
///
/// of referenced by being parsed.
public abstract class ChannelFrameParsingStateBase : ChannelParsingStateBase, IChannelFrameParsingState where T : IChannelCell
{
#region [ Members ]
// Fields
private bool m_trustHeaderLength;
private bool m_validateCheckSum;
#endregion
#region [ Constructors ]
///
/// Creates a new from specified parameters.
///
/// Binary length of the being parsed.
/// Reference to delegate to create new instances.
/// Determines if header lengths should be trusted over parsed byte count.
/// Determines if frame's check-sum should be validated.
protected ChannelFrameParsingStateBase(int parsedBinaryLength, CreateNewCellFunction createNewCellFunction, bool trustHeaderLength, bool validateCheckSum)
{
base.ParsedBinaryLength = parsedBinaryLength;
CreateNewCell = createNewCellFunction;
m_trustHeaderLength = trustHeaderLength;
m_validateCheckSum = validateCheckSum;
}
#endregion
#region [ Properties ]
///
/// Gets reference to delegate used to create a new object.
///
public virtual CreateNewCellFunction CreateNewCell { get; }
///
/// Gets or sets number of cells that are expected in associated being parsed.
///
public virtual int CellCount { get; set; }
///
/// Gets or sets flag that determines if header lengths should be trusted over parsed byte count.
///
///
/// It is expected that this will normally be left as true.
///
public virtual bool TrustHeaderLength
{
get => m_trustHeaderLength;
set => m_trustHeaderLength = value;
}
///
/// Gets or sets flag that determines if frame's check-sum should be validated.
///
///
/// It is expected that this will normally be left as true.
///
public virtual bool ValidateCheckSum
{
get => m_validateCheckSum;
set => m_validateCheckSum = value;
}
#endregion
}
}