package com.red.circle.live.infra.database.cache.service;

import com.red.circle.live.domain.live.LiveMusicStatus;

/**
 * 直播播放音乐心跳.
 *
 * @author pengliang on 2024/1/8
 */
public interface LiveMusicHeartbeatService {

  /**
   * 获取正在播放音乐用户id.
   */
  LiveMusicStatus getMusicUser(Long roomId);

  /**
   * 获取正在播放音乐用户id.
   */
  String getMusicUserInfo(Long roomId);

  /**
   * 设置播放音乐用户id.
   */
  void setMusicUser(Long roomId, LiveMusicStatus status);

  /**
   * 移除房间正在播放音乐用户.
   */
  void removeMickUser(Long roomId);

  /**
   * 操作抢占.
   *
   * @return true 获取锁
   */
  boolean lockMickOps(Long roomId);

  /**
   * 是否存在操作锁.
   */
  boolean existsMickOps(Long roomId);

  /**
   * 解锁.
   */
  void unLockMickOps(Long roomId);
}
