schema definitions

This commit is contained in:
2026-02-01 12:52:32 -03:00
parent dee8bbfb10
commit d31a3ed612
5 changed files with 444 additions and 0 deletions

130
schema/grpc.py Normal file
View File

@@ -0,0 +1,130 @@
"""
gRPC message definitions for MPR worker communication.
This is the source of truth for gRPC messages. The generator creates:
- grpc/protos/worker.proto (protobuf definition)
- grpc/worker_pb2.py (generated Python classes)
- grpc/worker_pb2_grpc.py (generated gRPC stubs)
"""
from dataclasses import dataclass
from typing import Optional
# -----------------------------------------------------------------------------
# Request Messages
# -----------------------------------------------------------------------------
@dataclass
class JobRequest:
"""Request to submit a transcode/trim job."""
job_id: str
source_path: str
output_path: str
preset_json: str # Serialized TranscodePreset
trim_start: Optional[float] = None
trim_end: Optional[float] = None
@dataclass
class ProgressRequest:
"""Request to stream progress updates for a job."""
job_id: str
@dataclass
class CancelRequest:
"""Request to cancel a running job."""
job_id: str
@dataclass
class Empty:
"""Empty message for requests with no parameters."""
pass
# -----------------------------------------------------------------------------
# Response Messages
# -----------------------------------------------------------------------------
@dataclass
class JobResponse:
"""Response after submitting a job."""
job_id: str
accepted: bool
message: str
@dataclass
class ProgressUpdate:
"""Streaming progress update from worker."""
job_id: str
progress: int # 0-100
current_frame: int
current_time: float
speed: float # e.g., 2.5x
status: str # pending, processing, completed, failed, cancelled
error: Optional[str] = None
@dataclass
class CancelResponse:
"""Response after cancel request."""
job_id: str
cancelled: bool
message: str
@dataclass
class WorkerStatus:
"""Worker health and capabilities."""
available: bool
active_jobs: int
supported_codecs: list[str]
gpu_available: bool
# -----------------------------------------------------------------------------
# Service Definition (for documentation, generator uses this)
# -----------------------------------------------------------------------------
GRPC_SERVICE = {
"name": "WorkerService",
"package": "mpr.worker",
"methods": [
{
"name": "SubmitJob",
"request": JobRequest,
"response": JobResponse,
"stream_response": False,
},
{
"name": "StreamProgress",
"request": ProgressRequest,
"response": ProgressUpdate,
"stream_response": True, # Server streaming
},
{
"name": "CancelJob",
"request": CancelRequest,
"response": CancelResponse,
"stream_response": False,
},
{
"name": "GetWorkerStatus",
"request": Empty,
"response": WorkerStatus,
"stream_response": False,
},
],
}