package safestring

import "sync"

/*
	Потокобезопасная строка
*/

// SafeString -- потокобезопасная строка
type SafeString struct {
	val   string
	block sync.RWMutex
}

// NewSafeString -- возвращает новый *SafeString
func NewSafeString() *SafeString {
	return &SafeString{}
}

// Get -- возвращает хранимое значение
func (sf *SafeString) Get() string {
	sf.block.RLock()
	defer sf.block.RUnlock()
	return sf.val
}

// Set -- устанавливает хранимое значение
func (sf *SafeString) Set(strVal string) {
	sf.block.Lock()
	defer sf.block.Unlock()
	sf.val = strVal
}
