import configparser
import os
from threading import Lock


class ConfigIni:
    def __init__(self, filename):
        self.filename = filename

        if not os.path.exists(self.filename):
            # 如果不存在，创建文件并写入初始内容
            with open(self.filename, 'w', encoding='utf-8') as config_file:
                config_file.write("# 示例配置文件\n")

        self.config = configparser.ConfigParser()
        self.lock = Lock()
        self.load()

    def load(self):
        with open(self.filename, 'r', encoding='utf-8') as configfile:
            self.config.read_file(configfile)

    def save(self):
        with open(self.filename, 'w', encoding='utf-8') as configfile:
            self.config.write(configfile)

    def get(self, section, key, default=""):
        with self.lock:
            try:
                if not self.config.has_option(section, key):
                    return default
                return self.config.get(section, key)
            except (configparser.NoSectionError, configparser.NoOptionError):
                return default

    def get_int(self, section, key, default="0"):
        return int(self.get(section, key, default))

    def set(self, section, key, value):
        with self.lock:
            if not self.config.has_section(section):
                self.config.add_section(section)
            self.config.set(section, key, value)
            self.save()

    def set_int(self, section, key, value):
        self.set(section, key, str(value))

    def get_section_keys(self, section):
        with self.lock:
            if self.config.has_section(section):
                return dict(self.config.items(section))
            else:
                return {}
