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"
hex = "0.4" hex = "0.4"
sha2 = "0.10" sha2 = "0.10"
argon2 = "0.3" argon2 = "0.3"
blake3 = "1.2" blake3 = "1.3"
bincode = "1.3" bincode = "1.3"
aes-gcm = "0.9" aes-gcm = "0.9"
sysinfo = "0.21" sysinfo = "0.21"
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
web3 = { version = "0.17", default-features = false, features = ["http-tls", "signing"] } web3 = { version = "0.17", default-features = false, features = ["http-tls", "signing"] }
tdn = { version = "0.6", default-features = false, features = ["full"] } tdn = { version = "0.7", default-features = false, features = ["full"] }
tdn_did = { version = "0.6" } tdn_did = { version = "0.7" }
tdn_storage = { git = "https://github.com/cympletech/tdn", branch="main" } tdn_storage = { git = "https://github.com/cympletech/tdn", branch="main" }
chat_types = { version = "0.1", path = "./types/chat" } chat_types = { version = "0.1", path = "./types/chat" }
group_types = { version = "0.1", path = "./types/group" } group_types = { version = "0.1", path = "./types/group" }
@ -62,3 +62,10 @@ openssl = { version = "0.10", features = ["vendored"] } # Add for cross-compile.
[target.'cfg(target_os="android")'.dependencies] [target.'cfg(target_os="android")'.dependencies]
jni = { version = "0.19", default-features = false } 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 @@
ESSE bulit-in app open types. 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 ### Open Apps
- Group Chat - Group Chat
- Domain - Domain

2
types/chat/Cargo.toml

@ -11,4 +11,4 @@ license = "MIT/Apache-2.0"
[dependencies] [dependencies]
serde = { version = "1", features = ["derive"] } 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 @@
use serde::{Deserialize, Serialize}; 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. /// message type use in network.
#[derive(Serialize, Deserialize, Clone)] #[derive(Serialize, Deserialize, Clone)]
pub enum NetworkMessage { pub enum NetworkMessage {
String(String), // content String(String), // content
Image(Vec<u8>), // image bytes. Image(Vec<u8>), // image bytes.
File(String, Vec<u8>), // filename, file bytes. File(String, Vec<u8>), // filename, file bytes.
Contact(String, GroupId, PeerId, Vec<u8>), // name, gid, addr, avatar bytes. Contact(PeerId, String, Vec<u8>), // PeerId, name, avatar bytes.
Record(Vec<u8>, u32), // record audio bytes. Record(Vec<u8>, u32), // record audio bytes.
Emoji, Emoji,
Phone, Phone,
Video, Video,

4
types/cloud/Cargo.toml

@ -11,5 +11,5 @@ license = "MIT/Apache-2.0"
[dependencies] [dependencies]
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
tdn_types = { version = "0.6", default-features = false } tdn_types = { version = "0.7", default-features = false }
tdn_did = { version = "0.6", 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;
use tdn_types::group::GroupId; use tdn_types::group::GroupId;
/// Personal data cloud service default TDN GROUP ID. /// Personal data cloud service default TDN GROUP ID.
#[rustfmt::skip] pub const CLOUD_ID: GroupId = 5;
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,
]);
/// ESSE service to peer layer Event. /// ESSE service to peer layer Event.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]

4
types/dao/Cargo.toml

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

87
types/dao/src/lib.rs

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

4
types/data/Cargo.toml

@ -14,5 +14,5 @@ default = ["tdn"]
tdn = ["tdn_did", "tdn_types"] tdn = ["tdn_did", "tdn_types"]
[dependencies] [dependencies]
tdn_did = { version = "0.6", default-features = false, optional = true } tdn_did = { version = "0.7", default-features = false, optional = true }
tdn_types = { version = "0.6", 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> {
} }
} }
#[cfg(feature = "tdn")] //#[cfg(feature = "tdn")]
pub mod tdn; //pub mod tdn;

2
types/data/src/tdn.rs

@ -1,5 +1,5 @@
use tdn_did::{Proof, PROOF_LENGTH}; 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}; use crate::{Data, OwnerId};

4
types/domain/Cargo.toml

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

18
types/domain/src/lib.rs

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

4
types/group/Cargo.toml

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

61
types/group/src/lib.rs

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

17
types/primitives/src/lib.rs

@ -75,7 +75,18 @@ pub mod bs32 {
} }
} }
pub fn id(peer: &tdn_types::primitive::PeerId) -> String { use tdn_types::primitives::{new_io_error, PeerId, PEER_ID_LENGTH};
let hash = blake3::hash(&peer.0);
bs32::encode(&hash.as_bytes()[0..30]) 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