<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://www.workerman.net/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

use support\Log;
use support\Request;
use app\process\Http;

global $argv;

return [
    'webman' => [
        'handler' => Http::class,
        'listen' => 'http://0.0.0.0:7979',
        'count' => cpu_count() * 4,
        'user' => '',
        'group' => '',
        'reusePort' => false,
        'eventLoop' => '',
        'context' => [],
        'constructor' => [
            'requestClass' => Request::class,
            'logger' => Log::channel('default'),
            'appPath' => app_path(),
            'publicPath' => public_path()
        ]
    ],
    // 游戏期号：自动创建下一期（依赖 game_config.period_auto_create_enabled）
    'gamePeriodAutoTicker' => [
        'handler'     => app\process\GamePeriodAutoTicker::class,
        'count'       => 1,
        'reloadable'  => false,
    ],
    'gameLiveTicker' => [
        'handler'     => app\process\GameLiveTicker::class,
        'count'       => 1,
        'reloadable'  => false,
    ],
    /** 热点缓存写队列消费者（与 GAME_HOT_CACHE_ENABLE_WRITE_QUEUE 配合） */
    'gameHotDataQueueConsumer' => [
        'handler'    => app\process\GameHotDataQueueConsumer::class,
        'count'      => 1,
        'reloadable' => false,
    ],
    // 充值订单：超时未支付自动失败（每 10 秒扫描一次）
    'depositOrderExpireTicker' => [
        'handler'    => app\process\DepositOrderExpireTicker::class,
        'count'      => 1,
        'reloadable' => false,
    ],
    // 渠道结算：按渠道周期自动结算（超管逻辑）
    'channelAutoSettleTicker' => [
        'handler'    => app\process\ChannelAutoSettleTicker::class,
        'count'      => 1,
        'reloadable' => false,
    ],
    // 后台测试页 WebSocket 连接服务（供 /admin/test/gameCurrentStatus 联调）
    'gameWebSocketServer' => [
        'handler'    => app\process\GameWebSocketServer::class,
        'listen'     => env('H5_WEBSOCKET_LISTEN', 'websocket://0.0.0.0:3131'),
        'count'      => 1,
        'reloadable' => false,
    ],

    // File update detection and automatic reload
    'monitor' => [
        'handler' => app\process\Monitor::class,
        'reloadable' => false,
        'constructor' => [
            // Monitor these directories
            'monitorDir' => array_merge([
                app_path(),
                config_path(),
                base_path() . '/process',
                base_path() . '/support',
                base_path() . '/resource',
                base_path() . '/.env',
            ], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
            // Files with these suffixes will be monitored
            'monitorExtensions' => [
                'php', 'html', 'htm', 'env'
            ],
            'options' => [
                'enable_file_monitor' => !in_array('-d', $argv) && DIRECTORY_SEPARATOR === '/',
                'enable_memory_monitor' => DIRECTORY_SEPARATOR === '/',
            ]
        ]
    ]
];
