mirror of https://github.com/tidwall/tile38.git
51 lines
790 B
Go
51 lines
790 B
Go
package server
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/tidwall/resp"
|
|
"github.com/tidwall/tile38/internal/log"
|
|
)
|
|
|
|
// READONLY yes|no
|
|
func (s *Server) cmdREADONLY(msg *Message) (resp.Value, error) {
|
|
start := time.Now()
|
|
|
|
// >> Args
|
|
|
|
args := msg.Args
|
|
if len(args) != 2 {
|
|
return retrerr(errInvalidNumberOfArguments)
|
|
}
|
|
|
|
switch args[1] {
|
|
case "yes", "no":
|
|
default:
|
|
return retrerr(errInvalidArgument(args[1]))
|
|
}
|
|
|
|
// >> Operation
|
|
|
|
var updated bool
|
|
if args[1] == "yes" {
|
|
if !s.config.readOnly() {
|
|
updated = true
|
|
s.config.setReadOnly(true)
|
|
log.Info("read only")
|
|
}
|
|
} else {
|
|
if s.config.readOnly() {
|
|
updated = true
|
|
s.config.setReadOnly(false)
|
|
log.Info("read write")
|
|
}
|
|
}
|
|
if updated {
|
|
s.config.write(false)
|
|
}
|
|
|
|
// >> Response
|
|
|
|
return OKMessage(msg, start), nil
|
|
}
|