// Internal control command. // SlaveStatus reads migration/slave status. func (c *CtrlContext) SlaveStatus(migration bool, slotId uint16) (int, error) { call := c.cli.newCall(proto.CmdSlaveSt, nil) if call.err != nil { return ctrl.NotSlave, call.err } var p ctrl.PkgSlaveStatus p.Migration = migration p.SlotId = slotId pkg, err := ctrl.Encode(call.cmd, c.dbId, call.seq, &p) if err != nil { c.cli.errCall(call, err) return ctrl.NotSlave, call.err } call.pkg = pkg c.cli.sending <- call r, err := (<-call.Done).Reply() if err != nil { return ctrl.NotSlave, call.err } t := r.(*ctrl.PkgSlaveStatus) if t.ErrMsg != "" { return ctrl.NotSlave, errors.New(t.ErrMsg) } return t.Status, nil }