Browse Source

refactor esse_types PeerId replace GroupId as UserId

pull/18/head
Sun 4 years ago
parent
commit
d38d889b9c
  1. 13
      Cargo.toml
  2. 8
      types/README.md
  3. 2
      types/chat/Cargo.toml
  4. 16
      types/chat/src/lib.rs
  5. 4
      types/cloud/Cargo.toml
  6. 8
      types/cloud/src/lib.rs
  7. 4
      types/dao/Cargo.toml
  8. 87
      types/dao/src/lib.rs
  9. 4
      types/data/Cargo.toml
  10. 4
      types/data/src/lib.rs
  11. 2
      types/data/src/tdn.rs
  12. 4
      types/domain/Cargo.toml
  13. 18
      types/domain/src/lib.rs
  14. 4
      types/group/Cargo.toml
  15. 61
      types/group/src/lib.rs
  16. 3
      types/primitives/Cargo.toml
  17. 17
      types/primitives/src/lib.rs

13
Cargo.toml

@ -41,15 +41,15 @@ base64 = "0.13" @@ -41,15 +41,15 @@ base64 = "0.13"
hex = "0.4"
sha2 = "0.10"
argon2 = "0.3"
blake3 = "1.2"
blake3 = "1.3"
bincode = "1.3"
aes-gcm = "0.9"
sysinfo = "0.21"
serde = { version = "1", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
web3 = { version = "0.17", default-features = false, features = ["http-tls", "signing"] }
tdn = { version = "0.6", default-features = false, features = ["full"] }
tdn_did = { version = "0.6" }
tdn = { version = "0.7", default-features = false, features = ["full"] }
tdn_did = { version = "0.7" }
tdn_storage = { git = "https://github.com/cympletech/tdn", branch="main" }
chat_types = { version = "0.1", path = "./types/chat" }
group_types = { version = "0.1", path = "./types/group" }
@ -62,3 +62,10 @@ openssl = { version = "0.10", features = ["vendored"] } # Add for cross-compile. @@ -62,3 +62,10 @@ openssl = { version = "0.10", features = ["vendored"] } # Add for cross-compile.
[target.'cfg(target_os="android")'.dependencies]
jni = { version = "0.19", default-features = false }
# DEBUG patch.
[patch.crates-io]
tdn = { git = "https://github.com/cympletech/tdn" }
tdn_types = { git = "https://github.com/cympletech/tdn" }
tdn_did = { git = "https://github.com/cympletech/tdn" }

8
types/README.md

@ -2,6 +2,14 @@ @@ -2,6 +2,14 @@
ESSE bulit-in app open types.
### Default GROUP_ID
- 0 - Own distributed devices.
- 1 - Chat.
- 2 - Group Chat.
- 3 - DAO.
- 4 - Domain.
- 5 - Cloud.
### Open Apps
- Group Chat
- Domain

2
types/chat/Cargo.toml

@ -11,4 +11,4 @@ license = "MIT/Apache-2.0" @@ -11,4 +11,4 @@ license = "MIT/Apache-2.0"
[dependencies]
serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }

16
types/chat/src/lib.rs

@ -1,14 +1,18 @@ @@ -1,14 +1,18 @@
use serde::{Deserialize, Serialize};
use tdn_types::{group::GroupId, primitive::PeerId};
use tdn_types::{group::GroupId, primitives::PeerId};
/// Chat service default TDN GROUP ID.
#[rustfmt::skip]
pub const CHAT_ID: GroupId = 1;
/// message type use in network.
#[derive(Serialize, Deserialize, Clone)]
pub enum NetworkMessage {
String(String), // content
Image(Vec<u8>), // image bytes.
File(String, Vec<u8>), // filename, file bytes.
Contact(String, GroupId, PeerId, Vec<u8>), // name, gid, addr, avatar bytes.
Record(Vec<u8>, u32), // record audio bytes.
String(String), // content
Image(Vec<u8>), // image bytes.
File(String, Vec<u8>), // filename, file bytes.
Contact(PeerId, String, Vec<u8>), // PeerId, name, avatar bytes.
Record(Vec<u8>, u32), // record audio bytes.
Emoji,
Phone,
Video,

4
types/cloud/Cargo.toml

@ -11,5 +11,5 @@ license = "MIT/Apache-2.0" @@ -11,5 +11,5 @@ license = "MIT/Apache-2.0"
[dependencies]
serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false }
tdn_did = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }
tdn_did = { version = "0.7", default-features = false }

8
types/cloud/src/lib.rs

@ -3,13 +3,7 @@ use tdn_did::Proof; @@ -3,13 +3,7 @@ use tdn_did::Proof;
use tdn_types::group::GroupId;
/// Personal data cloud service default TDN GROUP ID.
#[rustfmt::skip]
pub const CLOUD_ID: GroupId = GroupId([
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5,
]);
pub const CLOUD_ID: GroupId = 5;
/// ESSE service to peer layer Event.
#[derive(Serialize, Deserialize)]

4
types/dao/Cargo.toml

@ -12,5 +12,5 @@ license = "MIT/Apache-2.0" @@ -12,5 +12,5 @@ license = "MIT/Apache-2.0"
[dependencies]
chat_types = { path = "../chat", version = "0.1" }
serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false }
tdn_did = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }
tdn_did = { version = "0.7", default-features = false }

87
types/dao/src/lib.rs

@ -1,17 +1,14 @@ @@ -1,17 +1,14 @@
use serde::{Deserialize, Serialize};
use tdn_did::Proof;
use tdn_types::{group::GroupId, primitive::PeerId};
use tdn_types::{group::GroupId, primitives::PeerId};
use chat_types::NetworkMessage;
/// Dao app(service) default TDN GROUP ID.
#[rustfmt::skip]
pub const DAO_ID: GroupId = GroupId([
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 3,
]);
pub const DAO_ID: GroupId = 3;
/// Dao ID type.
pub type DaoId = u64;
/// Group chat types. include: Encrypted, Private, Open.
#[derive(Serialize, Deserialize, Clone, Copy, Debug, Eq, PartialEq)]
@ -54,10 +51,10 @@ pub enum DaoInfo { @@ -54,10 +51,10 @@ pub enum DaoInfo {
/// params: owner, owner_name, owner_avatar, Group ID, group_type, is_must_agree_by_manager,
/// group_name, group_bio, group_avatar.
Common(
GroupId,
PeerId,
String,
Vec<u8>,
GroupId,
DaoId,
GroupType,
bool,
String,
@ -67,10 +64,10 @@ pub enum DaoInfo { @@ -67,10 +64,10 @@ pub enum DaoInfo {
/// params: owner, owner_name, owner_avatar, Group ID, is_must_agree_by_manager, key_hash,
/// group_name(bytes), group_bio(bytes), group_avatar(bytes).
Encrypted(
GroupId,
PeerId,
String,
Vec<u8>,
GroupId,
DaoId,
bool,
Vec<u8>,
Vec<u8>,
@ -82,12 +79,12 @@ pub enum DaoInfo { @@ -82,12 +79,12 @@ pub enum DaoInfo {
/// Dao chat connect data structure.
/// params: Group ID, join_proof.
#[derive(Serialize, Deserialize)]
pub struct LayerConnect(pub GroupId, pub ConnectProof);
pub struct LayerConnect(pub DaoId, pub ConnectProof);
/// Dao chat connect success result data structure.
/// params: Group ID, group current height.
#[derive(Serialize, Deserialize)]
pub struct LayerResult(pub GroupId, pub i64);
pub struct LayerResult(pub DaoId, pub i64);
/// Dao chat connect proof.
#[derive(Serialize, Deserialize)]
@ -108,7 +105,7 @@ pub enum JoinProof { @@ -108,7 +105,7 @@ pub enum JoinProof {
Open(String, Vec<u8>),
/// when is invate, it will take group_manager's proof for invate.
/// params: invite_by_account, invite_proof, member name, member avatar.
Invite(GroupId, Proof, String, Vec<u8>),
Invite(PeerId, Proof, String, Vec<u8>),
/// zero-knowledge-proof. not has account id.
/// verify(proof, key_hash, current_peer_addr).
Zkp(Proof), // TODO MOCK-PROOF
@ -142,11 +139,11 @@ impl CheckType { @@ -142,11 +139,11 @@ impl CheckType {
#[derive(Serialize, Deserialize)]
pub enum LayerEvent {
/// offline. as BaseLayerEvent.
Offline(GroupId),
Offline(DaoId),
/// suspend. as BaseLayerEvent.
Suspend(GroupId),
Suspend(DaoId),
/// actived. as BaseLayerEvent.
Actived(GroupId),
Actived(DaoId),
/// check if account has permission to create group, and supported group types.
Check,
/// result check.
@ -157,36 +154,36 @@ pub enum LayerEvent { @@ -157,36 +154,36 @@ pub enum LayerEvent {
Create(DaoInfo, Proof),
/// result create group success.
/// params: Group ID, is_ok.
CreateResult(GroupId, bool),
CreateResult(DaoId, bool),
/// join group request. Group ID, Join Proof and info, request db id.
Request(GroupId, JoinProof),
Request(DaoId, JoinProof),
/// request need manager to handle.
RequestHandle(GroupId, GroupId, PeerId, JoinProof, i64, i64),
RequestHandle(DaoId, PeerId, JoinProof, i64, i64),
/// manager handle request result. Group ID, request db id, is ok.
RequestResult(GroupId, i64, bool),
RequestResult(DaoId, i64, bool),
/// agree join request.
Agree(GroupId, DaoInfo),
Agree(DaoId, DaoInfo),
/// reject join request. Group ID, if lost efficacy.
Reject(GroupId, bool),
/// online group member. Group ID, member id, member address.
MemberOnline(GroupId, GroupId, PeerId),
Reject(DaoId, bool),
/// online group member. Group ID, member id.
MemberOnline(DaoId, PeerId),
/// offline group member. Group ID, member id.
MemberOffline(GroupId, GroupId),
MemberOffline(DaoId, PeerId),
/// sync online members.
MemberOnlineSync(GroupId),
MemberOnlineSync(DaoId),
/// sync online members result.
MemberOnlineSyncResult(GroupId, Vec<(GroupId, PeerId)>),
MemberOnlineSyncResult(DaoId, Vec<PeerId>),
/// sync group event. Group ID, height, event.
Sync(GroupId, i64, Event),
Sync(DaoId, i64, Event),
/// packed sync event request. Group ID, from.
SyncReq(GroupId, i64),
SyncReq(DaoId, i64),
/// packed sync event. Group ID, current height, from height, to height, packed events.
Packed(GroupId, i64, i64, i64, Vec<PackedEvent>),
Packed(DaoId, i64, i64, i64, Vec<PackedEvent>),
}
impl LayerEvent {
/// get event's group id.
pub fn gcd(&self) -> Option<&GroupId> {
pub fn gcd(&self) -> Option<&DaoId> {
match self {
Self::Offline(gcd) => Some(gcd),
Self::Suspend(gcd) => Some(gcd),
@ -238,14 +235,14 @@ pub enum PackedEvent { @@ -238,14 +235,14 @@ pub enum PackedEvent {
GroupManagerAdd,
GroupManagerDel,
GroupClose,
/// params: member id, member address, member name, member avatar.
MemberInfo(GroupId, PeerId, String, Vec<u8>),
/// params: member id, member address, member name, member avatar, member join time.
MemberJoin(GroupId, PeerId, String, Vec<u8>, i64),
/// params: member id, member name, member avatar.
MemberInfo(PeerId, String, Vec<u8>),
/// params: member id, member name, member avatar, member join time.
MemberJoin(PeerId, String, Vec<u8>, i64),
/// params: member id,
MemberLeave(GroupId),
MemberLeave(PeerId),
/// params: member id, message, message time.
MessageCreate(GroupId, NetworkMessage, i64),
MessageCreate(PeerId, NetworkMessage, i64),
/// had in before.
None,
}
@ -258,12 +255,12 @@ pub enum Event { @@ -258,12 +255,12 @@ pub enum Event {
GroupManagerAdd,
GroupManagerDel,
GroupClose,
/// params: member id, member address, member name, member avatar.
MemberInfo(GroupId, PeerId, String, Vec<u8>),
/// params: member id, member address, member name, member avatar, member join time.
MemberJoin(GroupId, PeerId, String, Vec<u8>, i64),
/// params: member id, member name, member avatar.
MemberInfo(PeerId, String, Vec<u8>),
/// params: member id, member name, member avatar, member join time.
MemberJoin(PeerId, String, Vec<u8>, i64),
/// params: member id,
MemberLeave(GroupId),
MemberLeave(PeerId),
/// params: member id, message, height.
MessageCreate(GroupId, NetworkMessage, i64),
MessageCreate(PeerId, NetworkMessage, i64),
}

4
types/data/Cargo.toml

@ -14,5 +14,5 @@ default = ["tdn"] @@ -14,5 +14,5 @@ default = ["tdn"]
tdn = ["tdn_did", "tdn_types"]
[dependencies]
tdn_did = { version = "0.6", default-features = false, optional = true }
tdn_types = { version = "0.6", default-features = false, optional = true }
tdn_did = { version = "0.7", default-features = false, optional = true }
tdn_types = { version = "0.7", default-features = false, optional = true }

4
types/data/src/lib.rs

@ -101,5 +101,5 @@ impl<T: OwnerId> Data<T> { @@ -101,5 +101,5 @@ impl<T: OwnerId> Data<T> {
}
}
#[cfg(feature = "tdn")]
pub mod tdn;
//#[cfg(feature = "tdn")]
//pub mod tdn;

2
types/data/src/tdn.rs

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
use tdn_did::{Proof, PROOF_LENGTH};
use tdn_types::group::{GroupId, GROUP_LENGTH};
use tdn_types::group::{GroupId, GROUP_BYTES_LENGTH};
use crate::{Data, OwnerId};

4
types/domain/Cargo.toml

@ -11,5 +11,5 @@ license = "MIT/Apache-2.0" @@ -11,5 +11,5 @@ license = "MIT/Apache-2.0"
[dependencies]
serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false }
tdn_did = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }
tdn_did = { version = "0.7", default-features = false }

18
types/domain/src/lib.rs

@ -1,17 +1,11 @@ @@ -1,17 +1,11 @@
use serde::{Deserialize, Serialize};
use tdn_did::Proof;
use tdn_types::{group::GroupId, primitive::PeerId};
use tdn_types::{group::GroupId, primitives::PeerId};
// Same ID can has many name !.
/// Group chat app(service) default TDN GROUP ID.
#[rustfmt::skip]
pub const DOMAIN_ID: GroupId = GroupId([
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
]);
pub const DOMAIN_ID: GroupId = 4;
/// ESSE domain service layer Event.
#[derive(Serialize, Deserialize)]
@ -31,8 +25,8 @@ pub enum ServerEvent { @@ -31,8 +25,8 @@ pub enum ServerEvent {
/// params: name, is_ok.
Result(String, bool),
/// a identity info.
/// params: user_name, user_ID, user_address, user_bio, user_avatar.
Info(String, GroupId, PeerId, String, Vec<u8>),
/// params: user_id, user_name, user_bio, user_avatar.
Info(PeerId, String, String, Vec<u8>),
/// not found a user by name.
None(String),
/// current name is active.
@ -42,8 +36,8 @@ pub enum ServerEvent { @@ -42,8 +36,8 @@ pub enum ServerEvent {
/// params: name.
Deleted(String),
/// response the make friend.
/// params: remote_ID, name, is_ok.
Response(GroupId, String, bool),
/// params: remote_id, name, is_ok.
Response(PeerId, String, bool),
}
/// ESSE domain peer to service layer Event.

4
types/group/Cargo.toml

@ -12,5 +12,5 @@ license = "MIT/Apache-2.0" @@ -12,5 +12,5 @@ license = "MIT/Apache-2.0"
[dependencies]
chat_types = { path = "../chat", version = "0.1" }
serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false }
tdn_did = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }
tdn_did = { version = "0.7", default-features = false }

61
types/group/src/lib.rs

@ -1,72 +1,69 @@ @@ -1,72 +1,69 @@
use serde::{Deserialize, Serialize};
use tdn_did::Proof;
use tdn_types::{group::GroupId, primitive::PeerId};
use tdn_types::{group::GroupId, primitives::PeerId};
use chat_types::NetworkMessage;
/// Group chat app(service) default TDN GROUP ID.
#[rustfmt::skip]
pub const GROUP_CHAT_ID: GroupId = GroupId([
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2,
]);
pub const GROUP_CHAT_ID: GroupId = 2;
/// Group chat Group ID.
pub type GroupChatId = u64;
/// Group chat connect data structure.
/// params: Group ID, join_proof.
/// params: Group Chat ID, join_proof.
#[derive(Serialize, Deserialize)]
pub struct LayerConnect(pub GroupId, pub Proof);
pub struct LayerConnect(pub GroupChatId, pub Proof);
/// Group chat connect success result data structure.
/// params: Group ID, group name, group current height.
#[derive(Serialize, Deserialize)]
pub struct LayerResult(pub GroupId, pub String, pub i64);
pub struct LayerResult(pub GroupChatId, pub String, pub i64);
/// ESSE Group chat app's layer Event.
#[derive(Serialize, Deserialize)]
pub enum LayerEvent {
/// offline. as BaseLayerEvent.
Offline(GroupId),
Offline(GroupChatId),
/// suspend. as BaseLayerEvent.
Suspend(GroupId),
Suspend(GroupChatId),
/// actived. as BaseLayerEvent.
Actived(GroupId),
/// online group member. Group ID, member id, member address.
MemberOnline(GroupId, GroupId, PeerId),
Actived(GroupChatId),
/// online group member. Group ID, member id.
MemberOnline(GroupChatId, PeerId),
/// offline group member. Group ID, member id.
MemberOffline(GroupId, GroupId),
MemberOffline(GroupChatId, PeerId),
/// sync online members.
MemberOnlineSync(GroupId),
MemberOnlineSync(GroupChatId),
/// sync online members result.
MemberOnlineSyncResult(GroupId, Vec<(GroupId, PeerId)>),
MemberOnlineSyncResult(GroupChatId, Vec<PeerId>),
/// Change the group name.
GroupName(GroupId, String),
GroupName(GroupChatId, String),
/// close the group chat.
GroupClose(GroupId),
GroupClose(GroupChatId),
/// sync group event. Group ID, height, event.
Sync(GroupId, i64, Event),
Sync(GroupChatId, i64, Event),
/// peer sync event request. Group ID, from.
SyncReq(GroupId, i64),
SyncReq(GroupChatId, i64),
/// sync members status.
/// Group ID, current height, from height, to height,
/// add members(height, member id, addr, name, avatar),
/// leaved members(height, member id),
/// add messages(height, member id, message, time).
SyncRes(
GroupId,
GroupChatId,
i64,
i64,
i64,
Vec<(i64, GroupId, PeerId, String, Vec<u8>)>,
Vec<(i64, GroupId)>,
Vec<(i64, GroupId, NetworkMessage, i64)>,
Vec<(i64, PeerId, String, Vec<u8>)>,
Vec<(i64, PeerId)>,
Vec<(i64, PeerId, NetworkMessage, i64)>,
),
}
impl LayerEvent {
/// get event's group id.
pub fn gcd(&self) -> &GroupId {
pub fn gcd(&self) -> &GroupChatId {
match self {
Self::Offline(gcd) => gcd,
Self::Suspend(gcd) => gcd,
@ -87,10 +84,10 @@ impl LayerEvent { @@ -87,10 +84,10 @@ impl LayerEvent {
/// Group chat event.
#[derive(Serialize, Deserialize, Clone)]
pub enum Event {
/// params: member id, member address, member name, member avatar.
MemberJoin(GroupId, PeerId, String, Vec<u8>),
/// params: member id, member name, member avatar.
MemberJoin(PeerId, String, Vec<u8>),
/// params: member id,
MemberLeave(GroupId),
MemberLeave(PeerId),
/// params: member id, message, message time.
MessageCreate(GroupId, NetworkMessage, i64),
MessageCreate(PeerId, NetworkMessage, i64),
}

3
types/primitives/Cargo.toml

@ -10,5 +10,4 @@ keywords = ["distributed", "p2p", "did", "ESSE"] @@ -10,5 +10,4 @@ keywords = ["distributed", "p2p", "did", "ESSE"]
license = "MIT/Apache-2.0"
[dependencies]
blake3 = "1.3"
tdn_types = { version = "0.6", default-features = false }
tdn_types = { version = "0.7", default-features = false }

17
types/primitives/src/lib.rs

@ -75,7 +75,18 @@ pub mod bs32 { @@ -75,7 +75,18 @@ pub mod bs32 {
}
}
pub fn id(peer: &tdn_types::primitive::PeerId) -> String {
let hash = blake3::hash(&peer.0);
bs32::encode(&hash.as_bytes()[0..30])
use tdn_types::primitives::{new_io_error, PeerId, PEER_ID_LENGTH};
pub fn id_to_string(peer: &PeerId) -> String {
bs32::encode(&peer.0)
}
pub fn id_from_string(s: &str) -> std::io::Result<PeerId> {
let data = bs32::decode(s).ok_or(new_io_error("id from string is failure."))?;
if data.len() != PEER_ID_LENGTH {
return Err(new_io_error("id from string is failure."));
}
let mut bytes = [0u8; PEER_ID_LENGTH];
bytes.copy_from_slice(&data);
Ok(PeerId(bytes))
}

Loading…
Cancel
Save