doubly_linked_list_entry.go 1.01 KiB
package datastructure
import (
"sync"
)
type DoublyLinkedListEntry struct {
value interface{}
prev *DoublyLinkedListEntry
next *DoublyLinkedListEntry
mutex sync.RWMutex
}
func (entry *DoublyLinkedListEntry) GetNext() *DoublyLinkedListEntry {
entry.mutex.RLock()
defer entry.mutex.RUnlock()
return entry.next
}
func (entry *DoublyLinkedListEntry) SetNext(next *DoublyLinkedListEntry) {
entry.mutex.Lock()
defer entry.mutex.Unlock()
entry.next = next
}
func (entry *DoublyLinkedListEntry) GetPrev() *DoublyLinkedListEntry {
entry.mutex.RLock()
defer entry.mutex.RUnlock()
return entry.prev
}
func (entry *DoublyLinkedListEntry) SetPrev(prev *DoublyLinkedListEntry) {
entry.mutex.Lock()
defer entry.mutex.Unlock()
entry.prev = prev
}
func (entry *DoublyLinkedListEntry) GetValue() interface{} {
entry.mutex.RLock()
defer entry.mutex.RUnlock()
return entry.value
}
func (entry *DoublyLinkedListEntry) SetValue(value interface{}) {
entry.mutex.Lock()
defer entry.mutex.Unlock()
entry.value = value
}