mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Implement live syncback feature and enhance API for service data transfer
- Added a new `performSyncback` function in the `App` module to handle the synchronization of service data from the game to the server. - Introduced a `SyncbackConfirm` UI component to confirm syncback actions from the user. - Updated the API to include a new `/api/syncback` endpoint for handling syncback requests, validating protocol and server versions. - Enhanced the `SyncbackSignal` mechanism to facilitate communication between the server and the syncback process. - Added tests to ensure the functionality of the live syncback feature and its integration with the CLI. These changes improve the overall synchronization capabilities of the application, allowing for real-time updates and better project management.
This commit is contained in:
parent
6f8e5a5cf2
commit
307ac81aec
17 changed files with 1411 additions and 97 deletions
|
|
@ -27,6 +27,36 @@ pub(crate) const SERVER_VERSION: &str = env!("CARGO_PKG_VERSION");
|
|||
/// Current protocol version, which is required to match.
|
||||
pub const PROTOCOL_VERSION: u64 = 6;
|
||||
|
||||
/// A single service's children serialized as rbxm binary data.
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct ServiceChunk {
|
||||
pub class_name: String,
|
||||
#[serde(with = "serde_bytes")]
|
||||
pub data: Vec<u8>,
|
||||
}
|
||||
|
||||
/// Incoming request from the plugin for live syncback.
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct SyncbackRequest {
|
||||
pub protocol_version: u64,
|
||||
pub server_version: String,
|
||||
pub place_id: Option<u64>,
|
||||
pub services: Vec<ServiceChunk>,
|
||||
}
|
||||
|
||||
/// Payload passed from the API handler to the serve loop after validation.
|
||||
#[derive(Debug)]
|
||||
pub struct SyncbackPayload {
|
||||
pub services: Vec<ServiceChunk>,
|
||||
}
|
||||
|
||||
/// Why the live server exited its accept loop.
|
||||
pub enum ServerExitReason {
|
||||
SyncbackRequested(SyncbackPayload),
|
||||
}
|
||||
|
||||
/// Message returned by Rojo API when a change has occurred.
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue