separate some functions by folders.
This commit is contained in:
parent
3b8c3c9438
commit
1ddc42721c
0
.cargo/config
Normal file
0
.cargo/config
Normal file
13
.idea/hole.iml
Normal file
13
.idea/hole.iml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="CPP_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/examples" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/hole.iml" filepath="$PROJECT_DIR$/.idea/hole.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -1,15 +1,23 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="CMakeSettings">
|
||||||
|
<configurations>
|
||||||
|
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" ENABLED="true" />
|
||||||
|
</configurations>
|
||||||
|
</component>
|
||||||
|
<component name="CargoProjects">
|
||||||
|
<cargoProject FILE="$PROJECT_DIR$/Cargo.toml" />
|
||||||
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="e434c6bf-d215-476e-8569-84080f63e0f9" name="Default Changelist" comment="">
|
<list default="true" id="e434c6bf-d215-476e-8569-84080f63e0f9" name="Default Changelist" comment="">
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Cargo.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.lock" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Cargo.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.lock" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/Cargo.toml" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.toml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/Cargo.toml" beforeDir="false" afterPath="$PROJECT_DIR$/Cargo.toml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/chat/front_conn.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/front_conn.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/chat/front_conn.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/front_conn.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/chat/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/mod.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/chat/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/mod.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/chat/serv_conn.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/serv_conn.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/chat/serv_conn.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/serv_conn.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/fcp/basic.rs" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/chat/types.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/chat/types.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/fcp/mod.rs" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/db/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/db/mod.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/fcp/types.rs" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/lib.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/lib.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/lib.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/lib.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/main.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/main.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.rs" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
|
@ -18,19 +26,57 @@
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="ClangdSettings">
|
||||||
|
<option name="formatViaClangd" value="false" />
|
||||||
|
</component>
|
||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="MacroExpansionManager">
|
||||||
|
<option name="directoryName" value="8w8syaev" />
|
||||||
|
</component>
|
||||||
<component name="ProjectId" id="1mg1VEtaMSKRg5zbRaD9vETlRRi" />
|
<component name="ProjectId" id="1mg1VEtaMSKRg5zbRaD9vETlRRi" />
|
||||||
<component name="ProjectViewState">
|
<component name="ProjectViewState">
|
||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">
|
<component name="PropertiesComponent">
|
||||||
|
<property name="ASKED_SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||||
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
|
||||||
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
|
<property name="cf.first.check.clang-format" value="false" />
|
||||||
|
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../../olymp/mosh" />
|
||||||
|
<property name="nodejs_package_manager_path" value="npm" />
|
||||||
|
<property name="org.rust.cargo.project.model.PROJECT_DISCOVERY" value="true" />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="RunManager">
|
||||||
|
<configuration name="Run hole" type="CargoCommandRunConfiguration" factoryName="Cargo Command" temporary="true">
|
||||||
|
<option name="command" value="run --package hole --bin hole" />
|
||||||
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
|
<option name="channel" value="DEFAULT" />
|
||||||
|
<option name="requiredFeatures" value="true" />
|
||||||
|
<option name="allFeatures" value="false" />
|
||||||
|
<option name="emulateTerminal" value="false" />
|
||||||
|
<option name="backtrace" value="SHORT" />
|
||||||
|
<envs />
|
||||||
|
<option name="isRedirectInput" value="false" />
|
||||||
|
<option name="redirectInputPath" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
<recent_temporary>
|
||||||
|
<list>
|
||||||
|
<item itemvalue="Cargo.Run hole" />
|
||||||
|
</list>
|
||||||
|
</recent_temporary>
|
||||||
|
</component>
|
||||||
|
<component name="RustProjectSettings">
|
||||||
|
<option name="toolchainHomeDirectory" value="/usr/bin" />
|
||||||
|
<option name="version" value="2" />
|
||||||
|
</component>
|
||||||
|
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||||
<component name="TaskManager">
|
<component name="TaskManager">
|
||||||
<task active="true" id="Default" summary="Default task">
|
<task active="true" id="Default" summary="Default task">
|
||||||
<changelist id="e434c6bf-d215-476e-8569-84080f63e0f9" name="Default Changelist" comment="" />
|
<changelist id="e434c6bf-d215-476e-8569-84080f63e0f9" name="Default Changelist" comment="" />
|
||||||
|
@ -38,7 +84,14 @@
|
||||||
<option name="number" value="Default" />
|
<option name="number" value="Default" />
|
||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1609900445316</updated>
|
<updated>1609900445316</updated>
|
||||||
|
<workItem from="1613568843781" duration="346000" />
|
||||||
|
<workItem from="1613570542642" duration="4470000" />
|
||||||
|
<workItem from="1614190476350" duration="9000" />
|
||||||
|
<workItem from="1614277959074" duration="31000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
<component name="TypeScriptGeneratedFilesManager">
|
||||||
|
<option name="version" value="3" />
|
||||||
|
</component>
|
||||||
</project>
|
</project>
|
93
Cargo.lock
generated
93
Cargo.lock
generated
|
@ -1,5 +1,20 @@
|
||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
|
name = "ahash"
|
||||||
|
version = "0.4.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "0.7.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arc-swap"
|
name = "arc-swap"
|
||||||
version = "0.4.7"
|
version = "0.4.7"
|
||||||
|
@ -346,6 +361,13 @@ dependencies = [
|
||||||
"instant",
|
"instant",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fcpv2"
|
||||||
|
version = "0.0.1"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fnv"
|
name = "fnv"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
|
@ -528,6 +550,24 @@ dependencies = [
|
||||||
"web-sys",
|
"web-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.9.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
|
||||||
|
dependencies = [
|
||||||
|
"ahash",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashlink"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d99cf782f0dc4372d26846bec3de7804ceb5df083c2d4462c0b8d2330e894fa8"
|
||||||
|
dependencies = [
|
||||||
|
"hashbrown",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.17"
|
version = "0.1.17"
|
||||||
|
@ -545,6 +585,7 @@ dependencies = [
|
||||||
"async-tls 0.10.0",
|
"async-tls 0.10.0",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"async-tungstenite",
|
"async-tungstenite",
|
||||||
|
"fcpv2",
|
||||||
"futures",
|
"futures",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"log",
|
"log",
|
||||||
|
@ -651,20 +692,14 @@ checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libsqlite3-sys"
|
name = "libsqlite3-sys"
|
||||||
version = "0.20.0"
|
version = "0.20.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e3a245984b1b06c291f46e27ebda9f369a94a1ab8461d0e845e23f9ced01f5db"
|
checksum = "64d31059f22935e6c31830db5249ba2b7ecd54fd73a9909286f0a67aa55c2fbd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
"vcpkg",
|
"vcpkg",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "linked-hash-map"
|
|
||||||
version = "0.5.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
version = "0.4.2"
|
version = "0.4.2"
|
||||||
|
@ -683,15 +718,6 @@ dependencies = [
|
||||||
"cfg-if 0.1.10",
|
"cfg-if 0.1.10",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "lru-cache"
|
|
||||||
version = "0.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
|
|
||||||
dependencies = [
|
|
||||||
"linked-hash-map",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matches"
|
name = "matches"
|
||||||
version = "0.1.8"
|
version = "0.1.8"
|
||||||
|
@ -1066,6 +1092,24 @@ version = "0.1.57"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
|
checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
"thread_local",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.6.22"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "remove_dir_all"
|
name = "remove_dir_all"
|
||||||
version = "0.5.3"
|
version = "0.5.3"
|
||||||
|
@ -1092,15 +1136,15 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusqlite"
|
name = "rusqlite"
|
||||||
version = "0.24.0"
|
version = "0.24.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c78c3275d9d6eb684d2db4b2388546b32fdae0586c20a82f3905d21ea78b9ef"
|
checksum = "d5f38ee71cbab2c827ec0ac24e76f82eca723cee92c509a65f67dee393c25112"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"fallible-iterator",
|
"fallible-iterator",
|
||||||
"fallible-streaming-iterator",
|
"fallible-streaming-iterator",
|
||||||
|
"hashlink",
|
||||||
"libsqlite3-sys",
|
"libsqlite3-sys",
|
||||||
"lru-cache",
|
|
||||||
"memchr",
|
"memchr",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
]
|
]
|
||||||
|
@ -1291,6 +1335,15 @@ dependencies = [
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thread_local"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tinyvec"
|
name = "tinyvec"
|
||||||
version = "0.3.4"
|
version = "0.3.4"
|
||||||
|
|
|
@ -8,7 +8,7 @@ edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
ntru = "0.5.6"
|
ntru = "0.5.6"
|
||||||
rusqlite = "0.24.0"
|
rusqlite = "0.24.2"
|
||||||
toml = "0.5.6"
|
toml = "0.5.6"
|
||||||
tungstenite = "0.12.0"
|
tungstenite = "0.12.0"
|
||||||
tokio = { version = "0.3.3", features = ["full"] }
|
tokio = { version = "0.3.3", features = ["full"] }
|
||||||
|
@ -22,6 +22,10 @@ serde = "1.0.116"
|
||||||
serde_derive = "1.0.116"
|
serde_derive = "1.0.116"
|
||||||
async-trait = "0.1.42"
|
async-trait = "0.1.42"
|
||||||
|
|
||||||
|
[dependencies.fcpv2]
|
||||||
|
path = "../FCPv2"
|
||||||
|
|
||||||
[dependencies.async-tungstenite]
|
[dependencies.async-tungstenite]
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
features = ["tokio-runtime", "tokio-native-tls", "async-tls", "async-std"]
|
features = ["tokio-runtime", "tokio-native-tls", "async-tls", "async-std"]
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use crate::chat::types::PackedMessage;
|
use crate::chat::types::PackedMessage;
|
||||||
|
use crate::db;
|
||||||
use async_std::{
|
use async_std::{
|
||||||
io,
|
io,
|
||||||
net::{TcpListener, TcpStream},
|
net::{TcpListener, TcpStream},
|
||||||
|
@ -13,6 +14,8 @@ use serde_derive::Deserialize;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::sync::mpsc::{Receiver, Sender};
|
use std::sync::mpsc::{Receiver, Sender};
|
||||||
|
|
||||||
|
use super::stay_awake::request_repeater;
|
||||||
|
|
||||||
type SP = Sender<PackedMessage>;
|
type SP = Sender<PackedMessage>;
|
||||||
type RP = Receiver<PackedMessage>;
|
type RP = Receiver<PackedMessage>;
|
||||||
|
|
||||||
|
@ -28,25 +31,6 @@ pub fn listen_client(server_sender: SP, client_receiver: RP) -> io::Result<()> {
|
||||||
task::block_on(connect_to_client(server_sender, client_receiver))
|
task::block_on(connect_to_client(server_sender, client_receiver))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn request_repeater(ss: SP) -> io::Result<()> {
|
|
||||||
loop {
|
|
||||||
let time = std::time::Duration::from_millis(1000);
|
|
||||||
std::thread::sleep(time);
|
|
||||||
match ss.send(PackedMessage {
|
|
||||||
message: format!(
|
|
||||||
"ClientGet\n\
|
|
||||||
URI=KSK@msg23.txt\n\
|
|
||||||
Identifier=doesnt_matter?\n\
|
|
||||||
Verbosity=0\n\
|
|
||||||
ReturnType=direct\n\
|
|
||||||
EndMessage\n\n"
|
|
||||||
),
|
|
||||||
}) {
|
|
||||||
Ok(_) => {}
|
|
||||||
Err(e) => println!("{:?}", e),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async fn connect_to_client(server_sender: SP, client_receiver: RP) -> io::Result<()> {
|
async fn connect_to_client(server_sender: SP, client_receiver: RP) -> io::Result<()> {
|
||||||
let addr = env::args()
|
let addr = env::args()
|
||||||
|
@ -110,6 +94,8 @@ async fn connection_for_sending(
|
||||||
serde_json::from_str(jsoned.to_text().unwrap());
|
serde_json::from_str(jsoned.to_text().unwrap());
|
||||||
if let Ok(received_msg) = res {
|
if let Ok(received_msg) = res {
|
||||||
let msg = received_msg.message;
|
let msg = received_msg.message;
|
||||||
|
db::start_db().unwrap();
|
||||||
|
|
||||||
server_sender.send(PackedMessage { message: msg }).unwrap();
|
server_sender.send(PackedMessage { message: msg }).unwrap();
|
||||||
/* message example
|
/* message example
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
pub mod chat_api_base;
|
pub mod chat_api_base;
|
||||||
pub mod front_conn;
|
pub mod front_conn;
|
||||||
pub mod serv_conn;
|
pub mod serv_conn;
|
||||||
|
pub mod stay_awake;
|
||||||
|
pub mod serv_handler;
|
||||||
pub mod types;
|
pub mod types;
|
||||||
|
|
|
@ -1,20 +1,13 @@
|
||||||
use crate::chat::types::PackedMessage;
|
use super::serv_handler::to_server_sender;
|
||||||
use crate::fcpv2;
|
use crate::chat::types::{PackedMessage, RP, SP};
|
||||||
use async_std::task;
|
use async_std::task;
|
||||||
use serde_derive::Deserialize;
|
use serde_derive::Deserialize;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::sync::mpsc::{Receiver, Sender};
|
|
||||||
use tokio::{
|
use tokio::{
|
||||||
io::{self, AsyncReadExt, AsyncWriteExt},
|
io::{self, AsyncReadExt},
|
||||||
net::{
|
net::{tcp::OwnedReadHalf, TcpStream},
|
||||||
tcp::{OwnedReadHalf, OwnedWriteHalf},
|
|
||||||
TcpStream,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type SP = Sender<PackedMessage>;
|
|
||||||
type RP = Receiver<PackedMessage>;
|
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
pub async fn listen_server(client_sender: SP, server_receiver: RP) -> io::Result<()> {
|
pub async fn listen_server(client_sender: SP, server_receiver: RP) -> io::Result<()> {
|
||||||
task::block_on(connect_to_server(client_sender, server_receiver))
|
task::block_on(connect_to_server(client_sender, server_receiver))
|
||||||
|
@ -26,7 +19,7 @@ async fn connect_to_server(client_sender: SP, server_receiver: RP) -> io::Result
|
||||||
.unwrap_or_else(|| "127.0.0.1:9481".to_string());
|
.unwrap_or_else(|| "127.0.0.1:9481".to_string());
|
||||||
|
|
||||||
let stream = TcpStream::connect(&addr).await.expect("weeror here");
|
let stream = TcpStream::connect(&addr).await.expect("weeror here");
|
||||||
let (mut receiver, mut sender) = stream.into_split();
|
let (receiver, sender) = stream.into_split();
|
||||||
let t = task::spawn(server_responce_getter(receiver, client_sender));
|
let t = task::spawn(server_responce_getter(receiver, client_sender));
|
||||||
to_server_sender(sender, server_receiver).await?;
|
to_server_sender(sender, server_receiver).await?;
|
||||||
match t.await {
|
match t.await {
|
||||||
|
@ -50,31 +43,6 @@ async fn server_responce_getter(mut receiver: OwnedReadHalf, client_sender: SP)
|
||||||
Err(e) => println!("Error: {} ", e),
|
Err(e) => println!("Error: {} ", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
async fn to_server_sender(mut sender: OwnedWriteHalf, server_receiver: RP) -> io::Result<()> {
|
|
||||||
while let Ok(res) = server_receiver.recv() {
|
|
||||||
//TODO from_core_to_server_handler
|
|
||||||
if res.message == "STARTAPP!" {
|
|
||||||
let _ = sender
|
|
||||||
.write(("ClientHello\nName=ggg\nExpectedVersion=2.0\nEndMessage\n\n").as_bytes())
|
|
||||||
.await?;
|
|
||||||
} else if res.message.lines().next() == Some("ClientGet") {
|
|
||||||
let _ = sender.write(res.message.as_bytes()).await?;
|
|
||||||
} else {
|
|
||||||
//println!("{:?}", res.message);
|
|
||||||
let _ = sender.write(
|
|
||||||
format!(
|
|
||||||
"ClientPut\nIdentifier=hello\nURI=KSK@msg23.txt\nDataLength={}\nUploadFrom=direct\nEndMessage\n{}\n\n",
|
|
||||||
res.message.len(),
|
|
||||||
res.message
|
|
||||||
)
|
|
||||||
.as_bytes(),
|
|
||||||
).await;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Debug)]
|
#[derive(Deserialize, Debug)]
|
||||||
|
|
30
src/chat/serv_handler.rs
Normal file
30
src/chat/serv_handler.rs
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
use crate::chat::types::{RP, SP};
|
||||||
|
use tokio::{
|
||||||
|
io::{self, AsyncReadExt, AsyncWriteExt},
|
||||||
|
net::{
|
||||||
|
tcp::{OwnedReadHalf, OwnedWriteHalf},
|
||||||
|
TcpStream,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
use fcpv2::client::fcp_types::{ClientHello, ClientPut, FcpParser, SSK};
|
||||||
|
use fcpv2::client::types::FcpRequest;
|
||||||
|
pub async fn to_server_sender(mut sender: OwnedWriteHalf, server_receiver: RP) -> io::Result<()> {
|
||||||
|
while let Ok(res) = server_receiver.recv() {
|
||||||
|
//TODO from_core_to_server_handler
|
||||||
|
if res.message == "STARTAPP!" {
|
||||||
|
let _ = sender
|
||||||
|
.write((ClientHello::new("name".to_string(), 2.0).convert()).as_bytes())
|
||||||
|
.await?;
|
||||||
|
} else if res.message.lines().next() == Some("ClientGet") {
|
||||||
|
let _ = sender.write(res.message.as_bytes()).await?;
|
||||||
|
} else {
|
||||||
|
//println!("{:?}", res.message);
|
||||||
|
let key = SSK::parse("KSK@msg23.txt").unwrap();
|
||||||
|
let cp = ClientPut::new_default(key, "msg23.txt", "hello", &res.message[..]).convert();
|
||||||
|
let _ = sender.write(cp.as_bytes()).await;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
25
src/chat/stay_awake.rs
Normal file
25
src/chat/stay_awake.rs
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
use crate::chat::types::PackedMessage;
|
||||||
|
use async_std::io;
|
||||||
|
use std::sync::mpsc::Sender;
|
||||||
|
|
||||||
|
type SP = Sender<PackedMessage>;
|
||||||
|
|
||||||
|
pub async fn request_repeater(ss: SP) -> io::Result<()> {
|
||||||
|
loop {
|
||||||
|
let time = std::time::Duration::from_millis(1000);
|
||||||
|
std::thread::sleep(time);
|
||||||
|
match ss.send(PackedMessage {
|
||||||
|
message: format!(
|
||||||
|
"ClientGet\n\
|
||||||
|
URI=KSK@msg23.txt\n\
|
||||||
|
Identifier=doesnt_matter?\n\
|
||||||
|
Verbosity=0\n\
|
||||||
|
ReturnType=direct\n\
|
||||||
|
EndMessage\n\n"
|
||||||
|
),
|
||||||
|
}) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => println!("{:?}", e),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
use std::sync::mpsc::{Receiver, Sender};
|
||||||
//type Decoded = String;
|
//type Decoded = String;
|
||||||
//type Encoded = String;
|
//type Encoded = String;
|
||||||
|
|
||||||
|
@ -34,3 +35,6 @@
|
||||||
pub struct PackedMessage {
|
pub struct PackedMessage {
|
||||||
pub message: String,
|
pub message: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub type SP = Sender<PackedMessage>;
|
||||||
|
pub type RP = Receiver<PackedMessage>;
|
||||||
|
|
|
@ -1,4 +1,50 @@
|
||||||
|
use rusqlite::{params, Connection, Result};
|
||||||
pub mod messaging;
|
pub mod messaging;
|
||||||
fn main () {
|
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct Person {
|
||||||
|
id: i32,
|
||||||
|
name: String,
|
||||||
|
data: Option<Vec<u8>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn start_db() -> Result<()> {
|
||||||
|
let conn = Connection::open("../hole.db")?;
|
||||||
|
println!("{}", conn.is_autocommit());
|
||||||
|
|
||||||
|
match conn.execute(
|
||||||
|
"CREATE TABLE person (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
data BLOB
|
||||||
|
)",
|
||||||
|
params![],
|
||||||
|
) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => println!("{:?}", e),
|
||||||
|
}
|
||||||
|
let me = Person {
|
||||||
|
id: 0,
|
||||||
|
name: "Steven".to_string(),
|
||||||
|
data: None,
|
||||||
|
};
|
||||||
|
conn.execute(
|
||||||
|
"INSERT INTO person (name, data) VALUES (?1, ?2)",
|
||||||
|
params![me.name, me.data],
|
||||||
|
)?;
|
||||||
|
|
||||||
|
let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
|
||||||
|
let person_iter = stmt.query_map(params![], |row| {
|
||||||
|
Ok(Person {
|
||||||
|
id: row.get(0)?,
|
||||||
|
name: row.get(1)?,
|
||||||
|
data: row.get(2)?,
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
|
for person in person_iter {
|
||||||
|
println!("Found person {:?}", person.unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
mod chat;
|
mod chat;
|
||||||
pub mod db;
|
pub mod db;
|
||||||
pub mod encrypting;
|
pub mod encrypting;
|
||||||
|
|
||||||
pub mod fcpv2;
|
pub mod fcpv2;
|
||||||
pub use chat::front_conn;
|
pub use chat::front_conn;
|
||||||
|
|
|
@ -43,6 +43,8 @@ use std::{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
fn main() -> io::Result<()> {
|
fn main() -> io::Result<()> {
|
||||||
|
db::start_db().unwrap();
|
||||||
|
|
||||||
let (to_server_sender, server_receiver): (Sender<PackedMessage>, Receiver<PackedMessage>) =
|
let (to_server_sender, server_receiver): (Sender<PackedMessage>, Receiver<PackedMessage>) =
|
||||||
mpsc::channel();
|
mpsc::channel();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue