本文整理汇总了Golang中github.com/wandoulabs/redis-port/pkg/libs/log.PanicError函数的典型用法代码示例。如果您正苦于以下问题:Golang PanicError函数的具体用法?Golang PanicError怎么用?Golang PanicError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PanicError函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: sendPSyncFullsync
func sendPSyncFullsync(br *bufio.Reader, bw *bufio.Writer) (string, int64, <-chan int64) {
cmd := redis.NewCommand("psync", "?", -1)
if err := redis.Encode(bw, cmd, true); err != nil {
log.PanicError(err, "write psync command failed, fullsync")
}
r, err := redis.Decode(br)
if err != nil {
log.PanicError(err, "invalid psync response, fullsync")
}
if e, ok := r.(*redis.Error); ok {
log.Panicf("invalid psync response, fullsync, %s", e.Value)
}
x, err := redis.AsString(r, nil)
if err != nil {
log.PanicError(err, "invalid psync response, fullsync")
}
xx := strings.Split(x, " ")
if len(xx) != 3 || strings.ToLower(xx[0]) != "fullresync" {
log.Panicf("invalid psync response = '%s', should be fullsync", x)
}
v, err := strconv.ParseInt(xx[2], 10, 64)
if err != nil {
log.PanicError(err, "parse psync offset failed")
}
runid, offset := xx[1], v-1
return runid, offset, waitRdbDump(br)
}
示例2: newRDBLoader
func newRDBLoader(reader *bufio.Reader, rbytes *atomic2.Int64, size int) chan *rdb.BinEntry {
pipe := make(chan *rdb.BinEntry, size)
go func() {
defer close(pipe)
l := rdb.NewLoader(stats.NewCountReader(reader, rbytes))
if err := l.Header(); err != nil {
log.PanicError(err, "parse rdb header error")
}
for {
if entry, err := l.NextBinEntry(); err != nil {
log.PanicError(err, "parse rdb entry error")
} else {
if entry != nil {
pipe <- entry
} else {
if err := l.Footer(); err != nil {
log.PanicError(err, "parse rdb checksum error")
}
return
}
}
}
}()
return pipe
}
示例3: sendPSyncContinue
func sendPSyncContinue(br *bufio.Reader, bw *bufio.Writer, runid string, offset int64) {
cmd := redis.NewCommand("psync", runid, offset+2)
if err := redis.Encode(bw, cmd, true); err != nil {
log.PanicError(err, "write psync command failed, continue")
}
x, err := redis.AsString(redis.Decode(br))
if err != nil {
log.PanicError(err, "invalid psync response, continue")
}
xx := strings.Split(x, " ")
if len(xx) != 1 || strings.ToLower(xx[0]) != "continue" {
log.Panicf("invalid psync response = '%s', should be continue", x)
}
}
示例4: MustParse
func MustParse(s string) int64 {
v, err := Parse(s)
if err != nil {
log.PanicError(err, "parse bytesize failed")
}
return v
}
示例5: MustDecodeFromBytes
func MustDecodeFromBytes(p []byte) Resp {
resp, err := DecodeFromBytes(p)
if err != nil {
log.PanicError(err, "decode redis resp from bytes failed")
}
return resp
}
示例6: MustDecode
func MustDecode(r *bufio.Reader) Resp {
resp, err := Decode(r)
if err != nil {
log.PanicError(err, "decode redis resp failed")
}
return resp
}
示例7: MustHandlerTable
func MustHandlerTable(o interface{}) map[string]HandlerFunc {
t, err := NewHandlerTable(o)
if err != nil {
log.PanicError(err, "create redis handler map failed")
}
return t
}
示例8: authPassword
func authPassword(c net.Conn, passwd string) {
if passwd == "" {
return
}
_, err := c.Write(redis.MustEncodeToBytes(redis.NewCommand("auth", passwd)))
if err != nil {
log.PanicError(errors.Trace(err), "write auth command failed")
}
var b = make([]byte, 5)
if _, err := io.ReadFull(c, b); err != nil {
log.PanicError(errors.Trace(err), "read auth response failed")
}
if strings.ToUpper(string(b)) != "+OK\r\n" {
log.Panic("auth failed")
}
}
示例9: openSyncConn
func openSyncConn(target string, passwd string) (net.Conn, <-chan int64) {
c := openNetConn(target, passwd)
if _, err := c.Write(redis.MustEncodeToBytes(redis.NewCommand("sync"))); err != nil {
log.PanicError(errors.Trace(err), "write sync command failed")
}
return c, waitRdbDump(c)
}
示例10: MustEncodeToBytes
func MustEncodeToBytes(r Resp) []byte {
b, err := EncodeToBytes(r)
if err != nil {
log.PanicError(err, "encode redis resp to bytes failed")
}
return b
}
示例11: iocopy
func iocopy(r io.Reader, w io.Writer, p []byte, max int) int {
if max <= 0 || len(p) == 0 {
log.Panicf("invalid max = %d, len(p) = %d", max, len(p))
}
if len(p) > max {
p = p[:max]
}
if n, err := r.Read(p); err != nil {
log.PanicError(err, "read error")
} else {
p = p[:n]
}
if _, err := w.Write(p); err != nil {
log.PanicError(err, "write error")
}
return len(p)
}
示例12: init
func init() {
const path = "/tmp/testdb2-rocksdb"
if err := os.RemoveAll(path); err != nil {
log.PanicErrorf(err, "remove '%s' failed", path)
} else {
conf := rocksdb.NewDefaultConfig()
if testdb, err := rocksdb.Open(path, conf, true, false); err != nil {
log.PanicError(err, "open rocksdb failed")
} else {
testbl2 = rpdb.New(testdb)
}
}
l, err := net.Listen("tcp", ":0")
if err != nil {
log.PanicError(err, "open listen port failed")
}
port = l.Addr().(*net.TCPAddr).Port
go func() {
server := redis.MustServer(&Handler{})
for {
c, err := l.Accept()
if err != nil {
log.PanicError(err, "accept socket failed")
}
go func() {
defer c.Close()
r, w := bufio.NewReader(c), bufio.NewWriter(c)
s := &fakeSession2{}
for {
if req, err := redis.Decode(r); err != nil {
return
} else {
if rsp, err := server.Dispatch(s, req); err != nil {
return
} else if rsp != nil {
if err := redis.Encode(w, rsp); err != nil {
return
}
}
}
}
}()
}
}()
}
示例13: selectDB
func selectDB(c redigo.Conn, db uint32) {
s, err := redigo.String(c.Do("select", db))
if err != nil {
log.PanicError(err, "select command error")
}
if s != "OK" {
log.Panicf("select command response = '%s', should be 'OK'", s)
}
}
示例14: SyncCommand
func (cmd *cmdSync) SyncCommand(reader *bufio.Reader, target, passwd string) {
c := openNetConn(target, passwd)
defer c.Close()
writer := bufio.NewWriterSize(stats.NewCountWriter(c, &cmd.wbytes), WriterBufferSize)
defer flushWriter(writer)
go func() {
p := make([]byte, ReaderBufferSize)
for {
iocopy(c, ioutil.Discard, p, len(p))
}
}()
go func() {
var bypass bool = false
for {
resp := redis.MustDecode(reader)
if scmd, args, err := redis.ParseArgs(resp); err != nil {
log.PanicError(err, "parse command arguments failed")
} else if scmd != "ping" {
if scmd == "select" {
if len(args) != 1 {
log.Panicf("select command len(args) = %d", len(args))
}
s := string(args[0])
n, err := parseInt(s, MinDB, MaxDB)
if err != nil {
log.PanicErrorf(err, "parse db = %s failed", s)
}
bypass = !acceptDB(uint32(n))
}
if bypass {
cmd.nbypass.Incr()
continue
}
}
cmd.forward.Incr()
redis.MustEncode(writer, resp)
flushWriter(writer)
}
}()
for lstat := cmd.Stat(); ; {
time.Sleep(time.Second)
nstat := cmd.Stat()
var b bytes.Buffer
fmt.Fprintf(&b, "sync: ")
fmt.Fprintf(&b, " +forward=%-6d", nstat.forward-lstat.forward)
fmt.Fprintf(&b, " +nbypass=%-6d", nstat.nbypass-lstat.nbypass)
fmt.Fprintf(&b, " +nbytes=%d", nstat.wbytes-lstat.wbytes)
log.Info(b.String())
lstat = nstat
}
}
示例15: reinit
func reinit() {
if testbl != nil {
testbl.Close()
testbl = nil
}
const path = "/tmp/testdb-rocksdb"
if err := os.RemoveAll(path); err != nil {
log.PanicErrorf(err, "remove '%s' failed", path)
} else {
conf := rocksdb.NewDefaultConfig()
if testdb, err := rocksdb.Open(path, conf, true, false); err != nil {
log.PanicError(err, "open rocksdb failed")
} else {
testbl = rpdb.New(testdb)
}
}
}