diff options
| -rw-r--r-- | .idea/runConfigurations/Test_Message_Encoder.xml | 20 | ||||
| -rw-r--r-- | .idea/workspace.xml | 61 | ||||
| -rw-r--r-- | core/src/message_encoder.rs | 70 |
3 files changed, 34 insertions, 117 deletions
diff --git a/.idea/runConfigurations/Test_Message_Encoder.xml b/.idea/runConfigurations/Test_Message_Encoder.xml deleted file mode 100644 index eb9d4d6..0000000 --- a/.idea/runConfigurations/Test_Message_Encoder.xml +++ /dev/null @@ -1,20 +0,0 @@ -<component name="ProjectRunConfigurationManager"> - <configuration default="false" name="Test Message Encoder" type="CargoCommandRunConfiguration" factoryName="Cargo Command" folderName="Test"> - <option name="buildProfileId" value="test" /> - <option name="command" value="test --package there-is-nopads-core --lib message_encoder::encoder_tests::test_encode_decode -- --exact" /> - <option name="workingDirectory" value="file://$PROJECT_DIR$/core" /> - <envs /> - <option name="emulateTerminal" value="true" /> - <option name="channel" value="DEFAULT" /> - <option name="requiredFeatures" value="true" /> - <option name="allFeatures" value="false" /> - <option name="withSudo" value="false" /> - <option name="buildTarget" value="REMOTE" /> - <option name="backtrace" value="SHORT" /> - <option name="isRedirectInput" value="false" /> - <option name="redirectInputPath" value="" /> - <method v="2"> - <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" /> - </method> - </configuration> -</component>
\ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0ee50be..e053028 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,16 +10,16 @@ </component> <component name="ChangeListManager"> <list default="true" id="43098f42-7a3b-4fc2-ad78-a08c96f7f5db" name="Changes" comment="."> + <change beforePath="$PROJECT_DIR$/.idea/runConfigurations/Test_Message_Encoder.xml" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.obsidian/workspace.json" beforeDir="false" afterPath="$PROJECT_DIR$/.obsidian/workspace.json" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/doc/STRUCT.canvas" beforeDir="false" afterPath="$PROJECT_DIR$/doc/STRUCT.canvas" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/core/src/message_encoder.rs" beforeDir="false" afterPath="$PROJECT_DIR$/core/src/message_encoder.rs" afterDir="false" /> </list> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="LAST_RESOLUTION" value="IGNORE" /> </component> - <component name="ExecutionTargetManager" SELECTED_TARGET="RsBuildProfile:test" /> + <component name="ExecutionTargetManager" SELECTED_TARGET="RsBuildProfile:dev" /> <component name="FileTemplateManagerImpl"> <option name="RECENT_TEMPLATES"> <list> @@ -27,9 +27,24 @@ </list> </option> </component> + <component name="Git.Rebase.Settings"> + <option name="NEW_BASE" value="main" /> + </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> </component> + <component name="GitHubPullRequestSearchHistory"><![CDATA[{ + "lastFilter": { + "state": "OPEN", + "assignee": "Weicao-CatilGrass" + } +}]]></component> + <component name="GithubPullRequestsUISettings"><![CDATA[{ + "selectedUrlAndAccountId": { + "url": "https://github.com/CatilGrass/ThereIsNoPads.git", + "accountId": "34f7046b-db2c-4cf0-8894-3b6963dd549d" + } +}]]></component> <component name="MacroExpansionManager"> <option name="directoryName" value="EK7IzXE2" /> </component> @@ -39,7 +54,11 @@ }</component> <component name="ProjectId" id="2vby3gKCsFT9WfRIRxaNtOUu2Bx" /> <component name="ProjectViewState"> + <option name="autoscrollFromSource" value="true" /> + <option name="autoscrollToSource" value="true" /> <option name="hideEmptyMiddlePackages" value="true" /> + <option name="openDirectoriesWithSingleClick" value="true" /> + <option name="showExcludedFiles" value="false" /> <option name="showLibraryContents" value="true" /> </component> <component name="PropertiesComponent"><![CDATA[{ @@ -62,46 +81,21 @@ "nodejs_package_manager_path": "npm", "org.rust.cargo.project.model.PROJECT_DISCOVERY": "true", "org.rust.cargo.project.model.impl.CargoExternalSystemProjectAware.subscribe.first.balloon": "", - "settings.editor.selected.configurable": "language.rust.build.tool.cargo", + "settings.editor.selected.configurable": "preferences.lookFeel", "vue.rearranger.settings.migration": "true" } }]]></component> - <component name="RunManager" selected="Cargo.Test encoder_tests"> - <configuration name="Test encoder_tests" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true"> - <option name="command" value="test --package there-is-nopads-core --lib message_encoder::encoder_tests" /> - <option name="workingDirectory" value="file://$PROJECT_DIR$/core" /> - <envs /> - <option name="emulateTerminal" value="true" /> - <option name="channel" value="DEFAULT" /> - <option name="requiredFeatures" value="true" /> - <option name="allFeatures" value="false" /> - <option name="withSudo" value="false" /> - <option name="buildTarget" value="REMOTE" /> - <option name="backtrace" value="SHORT" /> - <option name="isRedirectInput" value="false" /> - <option name="redirectInputPath" value="" /> - <method v="2"> - <option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" /> - </method> - </configuration> + <component name="RunManager" selected="Cargo.Run Test"> <list> <item itemvalue="Cargo.Run Console Client" /> <item itemvalue="Cargo.Run Console Server" /> <item itemvalue="Cargo.Run Test" /> - <item itemvalue="Cargo.Test Message Encoder" /> <item itemvalue="Cargo.Run Gamepad Client" /> - <item itemvalue="Cargo.Test encoder_tests" /> <item itemvalue="Shell Script.Generate Documents (Linux)" /> <item itemvalue="Shell Script.Initialize (Linux)" /> <item itemvalue="Shell Script.Generate Documents (Windows)" /> <item itemvalue="Shell Script.Initialize (Windows)" /> </list> - <recent_temporary> - <list> - <item itemvalue="Cargo.Test encoder_tests" /> - <item itemvalue="Cargo.Test Message Encoder" /> - </list> - </recent_temporary> </component> <component name="RustProjectSettings"> <option name="toolchainHomeDirectory" value="$USER_HOME$/.cargo/bin" /> @@ -116,6 +110,9 @@ <updated>1744427871470</updated> <workItem from="1744427873184" duration="1209000" /> <workItem from="1745180836475" duration="8116000" /> + <workItem from="1745249796881" duration="84000" /> + <workItem from="1745249888324" duration="2865000" /> + <workItem from="1745253286696" duration="65000" /> </task> <task id="LOCAL-00001" summary="修改作者所有权"> <option name="closed" value="true" /> @@ -144,4 +141,8 @@ <MESSAGE value="." /> <option name="LAST_COMMIT_MESSAGE" value="." /> </component> + <component name="XSLT-Support.FileAssociations.UIState"> + <expand /> + <select /> + </component> </project>
\ No newline at end of file diff --git a/core/src/message_encoder.rs b/core/src/message_encoder.rs index a8575d0..cda7382 100644 --- a/core/src/message_encoder.rs +++ b/core/src/message_encoder.rs @@ -1,71 +1,7 @@ -use std::io::{Read, Write}; -use bincode::error::{DecodeError, EncodeError}; -use serde::de::DeserializeOwned; -use serde::Serialize; -use crate::messages::{ClientMessage, PlayerMessage, ServerCallbackMessage, ServerMessage}; +use crate::messages::PlayerMessage; -pub trait MessageEncoder: Serialize + DeserializeOwned { - fn encode(&self) -> Result<usize, EncodeError>; - fn decode(encode: usize) -> Result<Self, DecodeError> - where - Self: Sized; -} +impl PlayerMessage { + pub fn encode (&self) { -impl MessageEncoder for PlayerMessage { - fn encode(&self) -> Result<usize, EncodeError> { - bincode::serde::encode_into_std_write(self, &mut std::io::sink(), bincode::config::standard()) - } - - fn decode(encode: &usize) -> Result<Self, DecodeError> { - bincode::serde::decode_from_std_read(&mut &encode[..], bincode::config::standard()) - } -} - -impl MessageEncoder for ServerMessage { - fn encode(&self) -> Result<usize, EncodeError> { - bincode::serde::encode_into_std_write(self, &mut std::io::sink(), bincode::config::standard()) - } - - fn decode(encode: usize) -> Result<Self, DecodeError> { - bincode::serde::decode_from_std_read(&mut &encode[..], bincode::config::standard()) - } -} - -impl MessageEncoder for ClientMessage { - fn encode(&self) -> Result<usize, EncodeError> { - bincode::serde::encode_into_std_write(self, &mut std::io::sink(), bincode::config::standard()) - } - - fn decode(encode: usize) -> Result<Self, DecodeError> { - bincode::serde::decode_from_std_read(&mut &encode[..], bincode::config::standard()) - } -} - -impl MessageEncoder for ServerCallbackMessage { - fn encode(&self) -> Result<usize, EncodeError> { - bincode::serde::encode_into_std_write(self, &mut std::io::sink(), bincode::config::standard()) - } - - fn decode(encode: usize) -> Result<Self, DecodeError> { - bincode::serde::decode_from_std_read(&mut &encode[..], bincode::config::standard()) - } -} - -#[cfg(test)] -mod encoder_tests { - use crate::message_encoder::MessageEncoder; - use crate::messages::PlayerMessage; - - - #[test] - fn test_encode_decode() { - - let msg: String = String::from("Hello, World!"); - - let msg_player = PlayerMessage::Message(msg); - let msg_player_encoded = (&msg_player).encode().expect("Encode failed"); - let msg_player_decoded = PlayerMessage::decode(msg_player_encoded).expect("Decode failed"); - - assert!(msg_player == msg_player_decoded) } }
\ No newline at end of file |
