import worker code

This commit is contained in:
Rongsong Shen 2025-11-24 15:53:31 +08:00
parent 61654a06e8
commit 8831040043
64 changed files with 20853 additions and 1 deletions

101
src/worker/README.md Normal file
View file

@ -0,0 +1,101 @@
# Cross-Platform Xcecd Process
This is a cross-platform process manager implementation in C that supports both Linux and Windows platforms. The xcecd provides the following features:
- Sending status to the remote controller module at port 6789 and receive job requests
- Maintains a configurable thread pool for request processing
- Periodically collects and updates system resource status
- Manages child processes spawned from received commands
- Caches job status information
- Uses Unix Domain Sockets for communication between the main process and worker processes
## Building
### Prerequisites
- C compiler with C11 support
- Windows: Visual Studio
- Linux: GCC and development tools
### Build Instructions
On Linux
```bash
make
```
On Windows
```bash
nmake
```
## Configuration
The xcecd can be configured through the following parameters in `main.c`:
- `thread_pool_size`: Number of threads in the thread pool (default: 4)
- `resource_update_interval`: Interval for updating system resource status in seconds (default: 1)
- `job_status_update_interval`: Interval for updating job status in seconds (default: 1)
- `port`: Port number to listen on (default: 7869)
- `acct_file_path`: Path to the accounting file (default: `/tmp/xcecd.acct`)
- `log_file_path`: Path to the log file (default: `/tmp/xcecd.log`)
- `domain_sock_path`: Path to the Unix Domain Socket file (default: `/tmp/xcecd.sock`)
- `remote_host`: Remote server address (default: `lchen02`)
- `remote_port`: Remote server port (default: 6789)
- `update_interval`: Interval for sending status updates to the remote server (default: 1 second)
## Usage
### Starting the Xcecd
On Windows:
```bash
xcecd.exe
```
On Linux:
```bash
./xcecd
```
## Features
1. **Cross-Platform Support**
- Works on both Windows and Linux
- Abstracts platform-specific implementations
2. **Thread Pool**
- Configurable number of worker threads
- Efficient request handling
3. **System Monitoring**
- CPU usage monitoring
- Memory usage monitoring
- Disk space monitoring
4. **Process Management**
- Spawns child processes for received commands
- Tracks process status
- Manages process lifecycle
5. **Network Communication**
- TCP socket-based communication
- Simple text-based protocol
6. **Unix Domain Socket Communication**
- Uses Unix Domain Sockets for communication between the main process and worker processes
## Architecture
The xcecd is composed of several key components:
- **Main Process**: Coordinates all components and manages the lifecycle
- **Thread Pool**: Handles concurrent request processing
- **System Monitor**: Collects and updates system resource information
- **Process Manager**: Manages child processes and their status
- **Network Handler**: Handles network communication and request receiving
- **Resource Sync**: Synchronizes and aggregates resource collection thread, system monitor, and job information
## Contributing
Feel free to submit issues and enhancement requests!