示例#1
0
// В текущей позиции начинаются данные заголовка
// Пример: "\r\n000000a3 00000200 7fffffff \r\n" (всегда 31 символ)
//
// @param - данные
// @param - текущая позиция, в которой ожидаем увидеть данные заголовка
func isHeader(data []byte, startPos int) bool {

	values := utils.GetValues(data, startPos, headerControlCharacters)
	if len(values) != len(headerControlCharacters) {
		return false
	}

	return (bytes.Equal(values[0], beginHeaderMarker) &&
		bytes.Equal(values[1], space) &&
		bytes.Equal(values[2], space) &&
		bytes.Equal(values[3], space) &&
		bytes.Equal(values[4], endHeaderMarker))
}
示例#2
0
// Заголовок принадлежит области с данными атрибутов блока
// @param - все данные конфигурационного файла 1С
func (h header) isAttributesData(data []byte) bool {

	if h.regionPosition == 0 {
		return false
	}

	const minBlockSize = 21 // второй символ в имени блока
	if len(data)-h.regionPosition <= minBlockSize {
		return false
	}

	values := utils.GetValues(data, h.regionPosition, attrsControlCharacters)

	return (bytes.IndexByte(values[0], 0x00) == 0 &&
		bytes.IndexByte(values[1], 0x00) == 0 &&
		bytes.IndexByte(values[2], 0x00) == 0 &&
		bytes.IndexByte(values[3], 0x00) == 0)
}