1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
use std::net::SocketAddr;
use crate::server::swap_cmd::SwapCmd;
use super::conf::Conf;
use super::packet::Packet;
use super::sled_db::DB;
use super::peer_address::{update_peer_address, get_peer_address};
use super::cache_send::BatchSave;
use crate::client::cache_rec::RecMsg;
use crate::client::cache_task::TaskSave;


pub fn ask_peer_address(peer_id: &str) -> anyhow::Result<()> {
    let conf = Conf::get();
    update_peer_address("".to_string());
    let send_data = SwapCmd::ask(peer_id);
    let s = &conf.swap_server;
    let address: SocketAddr = s.parse()?;
    DB::Task.task_save(address, &send_data);
    Ok(())
}

pub fn read_peer_address() -> anyhow::Result<SocketAddr> {
    let res = get_peer_address();
    let addr: SocketAddr = res.parse()?;
    Ok(addr)
}

pub fn send(msg: &Vec<u8>, address: SocketAddr) -> u32 {
    let conf = Conf::get();
    let (sess, pacs) = Packet::new_pacs_from_send_bytes(msg);
    let total = &pacs.len();
    let lower = conf.min_retry_len as usize;
    if total > &lower {
        DB::Send.batch_save(address, &pacs.to_owned());
    }
    for pac in pacs.iter() {
        DB::Task.task_save(address, &pac.to_bytes());
    }
    sess
}

pub fn rec_one(address: SocketAddr, sess: u32) ->  Vec<u8> {
    DB::Rec.rec_one(address, sess)
}

pub fn rec_from() -> (SocketAddr, Vec<u8>) {
    DB::Rec.rec_from()
}