github.com/geniusesgroup/libgo@v0.0.0-20220713101832-828057a9d3d4/protocol/syllab.go (about) 1 /* For license and copyright information please see LEGAL file in repository */ 2 3 package protocol 4 5 const ( 6 SyllabDomain = "syllab.protocol" 7 8 SyllabServiceCompleteGoSyllabMethods = "urn:giti:syllab.protocol:service:complete-go-syllab-methods" 9 SyllabServiceGenerateGoSyllabMethods = "urn:giti:syllab.protocol:service:generate-go-syllab-methods" 10 ) 11 12 // Syllab is the interface that must implement by any struct to be a Syllab object tranmitable over networks! 13 // Standards in https://github.com/GeniusesGroup/RFCs/blob/master/Syllab.md 14 type Syllab interface { 15 // CheckSyllab usually just check LenOfSyllabStack not greater than len of given payload. and call just before decode payload. 16 CheckSyllab(payload []byte) (err Error) 17 18 // ToSyllab encode the struct pointer to Syllab format 19 // in non embed struct usually `stackIndex = 0` & `heapIndex = {{rn}}.LenOfSyllabStack()` as heap start index || end of stack size! 20 ToSyllab(payload []byte, stackIndex, heapIndex uint32) (freeHeapIndex uint32) 21 // FromSyllab decode Syllab to the struct pointer! 22 FromSyllab(payload []byte, stackIndex uint32) 23 24 // LenAsSyllab return whole calculated length of Syllab encoded of the struct 25 // default is simple as `return uint64({{RecName}}.LenOfSyllabStack() + {{RecName}}.LenOfSyllabHeap())` 26 LenAsSyllab() uint64 27 28 // LenOfSyllabStack return calculated stack length of Syllab encoded of the struct 29 LenOfSyllabStack() uint32 30 // LenOfSyllabStack return calculated heap length of Syllab encoded of the struct 31 LenOfSyllabHeap() uint32 32 }