23 01 25
Сделал более понятный названия у интерфейса BodyHasLine (всё работает)
This commit is contained in:
parent
c1964adb58
commit
9f1ca37977
@ -3,25 +3,27 @@ package blockchain.body;
|
|||||||
/**
|
/**
|
||||||
* BodyHasLine — для типов, которые имеют линейные поля в body.
|
* BodyHasLine — для типов, которые имеют линейные поля в body.
|
||||||
*
|
*
|
||||||
* Новый префикс для line-сообщений (BigEndian) в НАЧАЛЕ bodyBytes:
|
* Line-prefix (BigEndian) в НАЧАЛЕ bodyBytes:
|
||||||
* [4] lineCode код линии:
|
* [4] lineCode код линии (root-идентификатор):
|
||||||
* - 0 для нулевой линии
|
* - 0 для дефолтной линии/канала "0" (root = HEADER, blockNumber=0)
|
||||||
* - для каналов: blockNumber "заглавия линии" (CREATE_CHANNEL или HEADER/0)
|
* - для канала "X": blockNumber root-блока канала (CREATE_CHANNEL)
|
||||||
* [4] prevLineNumber
|
*
|
||||||
* [32] prevLineHash32
|
* [4] prevLineBlockGlobalNumber глобальный номер предыдущего блока в этой линии
|
||||||
* [4] thisLineNumber
|
* [32] prevLineBlockHash32 hash32 предыдущего блока в этой линии
|
||||||
|
*
|
||||||
|
* [4] lineSeq порядковый номер сообщения внутри линии (1..N)
|
||||||
*
|
*
|
||||||
* Важно:
|
* Важно:
|
||||||
* - Правильность prevLineNumber/hash и согласование thisLineNumber
|
* - Проверка связности линии (prevLineBlockGlobalNumber ↔ prevLineBlockHash32) и корректности lineSeq
|
||||||
* проверяется на сервере/в БД при вставке (а не в body.check()).
|
* выполняется на сервере/в БД при вставке (а не в body.check()).
|
||||||
*/
|
*/
|
||||||
public interface BodyHasLine {
|
public interface BodyHasLine {
|
||||||
|
|
||||||
int lineCode();
|
int lineCode();
|
||||||
|
|
||||||
int prevLineNumber();
|
int prevLineBlockGlobalNumber();
|
||||||
|
|
||||||
byte[] prevLineHash32();
|
byte[] prevLineBlockHash32();
|
||||||
|
|
||||||
int thisLineNumber();
|
int lineSeq();
|
||||||
}
|
}
|
||||||
@ -248,9 +248,9 @@ public final class ConnectionBody implements BodyRecord, BodyHasTarget, BodyHasL
|
|||||||
|
|
||||||
/* ====================== BodyHasLine ====================== */
|
/* ====================== BodyHasLine ====================== */
|
||||||
@Override public int lineCode() { return lineCode; }
|
@Override public int lineCode() { return lineCode; }
|
||||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
@Override public int lineSeq() { return thisLineNumber; }
|
||||||
|
|
||||||
/* ====================== BodyHasTarget ===================== */
|
/* ====================== BodyHasTarget ===================== */
|
||||||
@Override public String toBchName() { return toBlockchainName; }
|
@Override public String toBchName() { return toBlockchainName; }
|
||||||
|
|||||||
@ -164,7 +164,7 @@ public final class CreateChannelBody implements BodyRecord, BodyHasLine {
|
|||||||
|
|
||||||
/* ====================== BodyHasLine ====================== */
|
/* ====================== BodyHasLine ====================== */
|
||||||
@Override public int lineCode() { return lineCode; }
|
@Override public int lineCode() { return lineCode; }
|
||||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
@Override public int lineSeq() { return thisLineNumber; }
|
||||||
}
|
}
|
||||||
@ -505,12 +505,12 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine {
|
|||||||
|
|
||||||
/* ====================== BodyHasLine ====================== */
|
/* ====================== BodyHasLine ====================== */
|
||||||
@Override public int lineCode() { return lineCode; }
|
@Override public int lineCode() { return lineCode; }
|
||||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||||
@Override public byte[] prevLineHash32() {
|
@Override public byte[] prevLineBlockHash32() {
|
||||||
if (prevLineHash32 == null) return null;
|
if (prevLineHash32 == null) return null;
|
||||||
return Arrays.copyOf(prevLineHash32, 32);
|
return Arrays.copyOf(prevLineHash32, 32);
|
||||||
}
|
}
|
||||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
@Override public int lineSeq() { return thisLineNumber; }
|
||||||
|
|
||||||
/* ====================== BodyHasTarget ===================== */
|
/* ====================== BodyHasTarget ===================== */
|
||||||
@Override public String toBchName() { return toBlockchainName; }
|
@Override public String toBchName() { return toBlockchainName; }
|
||||||
|
|||||||
@ -219,9 +219,9 @@ public final class TextLineBody implements BodyRecord, BodyHasLine, BodyHasTarge
|
|||||||
|
|
||||||
/* ====================== BodyHasLine ====================== */
|
/* ====================== BodyHasLine ====================== */
|
||||||
@Override public int lineCode() { return lineCode; }
|
@Override public int lineCode() { return lineCode; }
|
||||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||||
@Override public byte[] prevLineHash32() { return Arrays.copyOf(prevLineHash32, 32); }
|
@Override public byte[] prevLineBlockHash32() { return Arrays.copyOf(prevLineHash32, 32); }
|
||||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
@Override public int lineSeq() { return thisLineNumber; }
|
||||||
|
|
||||||
/* ====================== BodyHasTarget ===================== */
|
/* ====================== BodyHasTarget ===================== */
|
||||||
@Override public String toBchName() { return null; } // по ТЗ: не хранить
|
@Override public String toBchName() { return null; } // по ТЗ: не хранить
|
||||||
|
|||||||
@ -195,7 +195,7 @@ public final class UserParamBody implements BodyRecord, BodyHasLine {
|
|||||||
|
|
||||||
/* ====================== BodyHasLine ====================== */
|
/* ====================== BodyHasLine ====================== */
|
||||||
@Override public int lineCode() { return lineCode; }
|
@Override public int lineCode() { return lineCode; }
|
||||||
@Override public int prevLineNumber() { return prevLineNumber; }
|
@Override public int prevLineBlockGlobalNumber() { return prevLineNumber; }
|
||||||
@Override public byte[] prevLineHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
@Override public byte[] prevLineBlockHash32() { return prevLineHash32 == null ? null : Arrays.copyOf(prevLineHash32, 32); }
|
||||||
@Override public int thisLineNumber() { return thisLineNumber; }
|
@Override public int lineSeq() { return thisLineNumber; }
|
||||||
}
|
}
|
||||||
@ -232,9 +232,9 @@ public final class Net_AddBlock_Handler implements JsonMessageHandler {
|
|||||||
|
|
||||||
if (block.body instanceof BodyHasLine bl) {
|
if (block.body instanceof BodyHasLine bl) {
|
||||||
lineCode = bl.lineCode();
|
lineCode = bl.lineCode();
|
||||||
prevLineNumber = bl.prevLineNumber();
|
prevLineNumber = bl.prevLineBlockGlobalNumber();
|
||||||
prevLineHash32 = bl.prevLineHash32();
|
prevLineHash32 = bl.prevLineBlockHash32();
|
||||||
thisLineNumber = bl.thisLineNumber();
|
thisLineNumber = bl.lineSeq();
|
||||||
|
|
||||||
// Нормализация: -1 не пишем в БД (для совместимости со старым TextBody)
|
// Нормализация: -1 не пишем в БД (для совместимости со старым TextBody)
|
||||||
if (prevLineNumber != null && prevLineNumber == -1) {
|
if (prevLineNumber != null && prevLineNumber == -1) {
|
||||||
|
|||||||
@ -294,13 +294,13 @@ public final class ChainState {
|
|||||||
if (t == TYPE_CONNECTION && body instanceof BodyHasLine hlc) {
|
if (t == TYPE_CONNECTION && body instanceof BodyHasLine hlc) {
|
||||||
connectionLine.lastGlobalNumber = blockNumber;
|
connectionLine.lastGlobalNumber = blockNumber;
|
||||||
connectionLine.lastHashHex = hex64;
|
connectionLine.lastHashHex = hex64;
|
||||||
connectionLine.lastThisLineNumber = hlc.thisLineNumber();
|
connectionLine.lastThisLineNumber = hlc.lineSeq();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (t == TYPE_USER_PARAM && body instanceof BodyHasLine hlu) {
|
if (t == TYPE_USER_PARAM && body instanceof BodyHasLine hlu) {
|
||||||
userParamLine.lastGlobalNumber = blockNumber;
|
userParamLine.lastGlobalNumber = blockNumber;
|
||||||
userParamLine.lastHashHex = hex64;
|
userParamLine.lastHashHex = hex64;
|
||||||
userParamLine.lastThisLineNumber = hlu.thisLineNumber();
|
userParamLine.lastThisLineNumber = hlu.lineSeq();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user