//******************************************************************************************************
// IChannelFrameParsingState.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.
// 12/17/2012 - Starlynn Danyelle Gilliam
// Modified Header.
//
//******************************************************************************************************
namespace GSF.PhasorProtocols
{
///
/// Defines function signature for creating new objects.
///
/// Reference to parent .
/// Current parsing state of associated .
/// Index of cell within its collection.
/// Binary image to parse from.
/// Start index into to begin parsing.
/// Returns the total number of bytes parsed from .
/// New object.
/// Specific type of object that gets created by referenced function.
public delegate T CreateNewCellFunction(IChannelFrame parent, IChannelFrameParsingState state, int index, byte[] buffer, int startIndex, out int parsedLength) where T : IChannelCell;
///
/// Represents a protocol independent interface representation of the parsing state of any kind of .
///
/// Specific type that the references.
public interface IChannelFrameParsingState : IChannelParsingState where T : IChannelCell
{
///
/// Gets reference to delegate used to create a new object.
///
CreateNewCellFunction CreateNewCell { get; }
///
/// Gets or sets number of cells that are expected in associated being parsed.
///
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.
///
bool TrustHeaderLength { get; set; }
///
/// 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.
///
bool ValidateCheckSum { get; set; }
}
}