// UPR_FAILOVER_LOG, synchronous call. func (client *Client) UprFailOverLog( req *mc.MCRequest) ([][2]uint64, error) { req.Opcode = UPR_FAILOVER_LOG // #OpCode req.Opaque = 0xDEADBEEF // #Opaque req.Key = []byte{} // #Key req.Extras = []byte{} // #Extras // Trasmit the request if err := client.conn.Transmit(req); err != nil { return nil, err } res := <-client.response // Wait for response from doRecieve() if res.Opcode != UPR_FAILOVER_LOG { err := fmt.Errorf("UprFailOverLog: unexpected #opcode", res.Opcode) return nil, err } else if req.Opaque != res.Opaque { err := fmt.Errorf( "UprFailOverLog: #opaque mismatch", req.Opaque, res.Opaque) return nil, err } else if len(res.Body)%16 != 0 { err := fmt.Errorf( "UprFailOverLog: Invalide body of length", len(res.Body)) return nil, err } else if res.Status != mc.SUCCESS { return nil, fmt.Errorf("UprOpen: Status", res.Status) } // Return the log return parseFailoverLog(res.Body), nil }