From 6221b18120af925dfc8e2bc201120884a41ba7cb Mon Sep 17 00:00:00 2001 From: Hans Moog <hm@mkjc.net> Date: Tue, 2 Jul 2019 15:09:38 +0200 Subject: [PATCH] Feat: added BundleTailHash to Transaction metadata --- .../transactionmetadata.go | 49 ++++++++++++++----- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/packages/model/transactionmetadata/transactionmetadata.go b/packages/model/transactionmetadata/transactionmetadata.go index 39874a5a..8ba50c3c 100644 --- a/packages/model/transactionmetadata/transactionmetadata.go +++ b/packages/model/transactionmetadata/transactionmetadata.go @@ -13,18 +13,20 @@ import ( // region type definition and constructor ////////////////////////////////////////////////////////////////////////////// type TransactionMetadata struct { - hash ternary.Trytes - hashMutex sync.RWMutex - receivedTime time.Time - receivedTimeMutex sync.RWMutex - solid bool - solidMutex sync.RWMutex - liked bool - likedMutex sync.RWMutex - finalized bool - finalizedMutex sync.RWMutex - modified bool - modifiedMutex sync.RWMutex + hash ternary.Trytes + hashMutex sync.RWMutex + bundleTailHash ternary.Trytes + bundleTailHashMutex sync.RWMutex + receivedTime time.Time + receivedTimeMutex sync.RWMutex + solid bool + solidMutex sync.RWMutex + liked bool + likedMutex sync.RWMutex + finalized bool + finalizedMutex sync.RWMutex + modified bool + modifiedMutex sync.RWMutex } func New(hash ternary.Trytes) *TransactionMetadata { @@ -65,6 +67,29 @@ func (metadata *TransactionMetadata) SetHash(hash ternary.Trytes) { } } +func (metadata *TransactionMetadata) GetBundleTailHash() ternary.Trytes { + metadata.bundleTailHashMutex.RLock() + defer metadata.bundleTailHashMutex.RUnlock() + + return metadata.bundleTailHash +} + +func (metadata *TransactionMetadata) SetBundleTailHash(bundleTailHash ternary.Trytes) { + metadata.bundleTailHashMutex.RLock() + if metadata.bundleTailHash != bundleTailHash { + metadata.bundleTailHashMutex.RUnlock() + metadata.bundleTailHashMutex.Lock() + defer metadata.bundleTailHashMutex.Unlock() + if metadata.bundleTailHash != bundleTailHash { + metadata.bundleTailHash = bundleTailHash + + metadata.SetModified(true) + } + } else { + metadata.bundleTailHashMutex.RUnlock() + } +} + func (metadata *TransactionMetadata) GetReceivedTime() time.Time { metadata.receivedTimeMutex.RLock() defer metadata.receivedTimeMutex.RUnlock() -- GitLab