// Touch command func (client *Client) Touch(key string, expiration int64) error { client.lock() defer client.unlock() rawKey := client.addPrefix(key) cKey := C.CString(rawKey) defer C.free(unsafe.Pointer(cKey)) cKeyLen := C.size_t(len(rawKey)) cExptime := C.exptime_t(expiration) cNoreply := C.bool(client.noreply) var rst **C.message_result_t var n C.size_t errCode := C.client_touch( client._imp, &cKey, &cKeyLen, cExptime, cNoreply, 1, &rst, &n, ) defer C.client_destroy_message_result(client._imp) if errCode == 0 { if client.noreply { return nil } else if int(n) == 1 && (*rst).type_ == C.MSG_TOUCHED { return nil } } return errors.New(errorMessage[errCode]) }
// Touch command func (client *Client) Touch(key string, expiration int64) error { client.lock() defer client.unlock() rawKey := client.addPrefix(key) cKey := C.CString(rawKey) defer C.free(unsafe.Pointer(cKey)) cKeyLen := C.size_t(len(rawKey)) cExptime := C.exptime_t(expiration) cNoreply := C.bool(client.noreply) var rst **C.message_result_t var n C.size_t errCode := C.client_touch( client._imp, &cKey, &cKeyLen, cExptime, cNoreply, 1, &rst, &n, ) defer C.client_destroy_message_result(client._imp) switch errCode { case 0: if client.noreply { return nil } else if int(n) == 1 { if (*rst).type_ == C.MSG_TOUCHED { return nil } else if (*rst).type_ == C.MSG_NOT_FOUND { return ErrCacheMiss } } case C.RET_INVALID_KEY_ERR: return ErrMalformedKey } return networkError(errorMessage[errCode]) }