| Crates.io | xlink |
| lib.rs | xlink |
| version | 0.1.0 |
| created_at | 2025-12-31 06:30:03.603914+00 |
| updated_at | 2025-12-31 06:30:03.603914+00 |
| description | Unified Multi-Channel Communication SDK |
| homepage | https://github.com/Kirky-X/xlink |
| repository | https://github.com/Kirky-X/xlink |
| max_upload_size | |
| id | 2014014 |
| size | 673,066 |
Unified Multi-Channel Push SDK with End-to-End Encryption
Features โข Quick Start โข Documentation โข Examples โข Contributing
๐ฏ Core Features
|
โก Advanced Features
|
๐ก Communication Features
|
๐ก๏ธ Security Features
|
graph LR
A[Application] --> B[UnifiedPush SDK]
B --> C[Channel Router]
C --> D[LAN Channel]
C --> E[WiFi Channel]
C --> F[Bluetooth Channel]
C --> G[Mesh Channel]
C --> H[Memory Channel]
C --> I[Remote Channel]
D --> J[Network Layer]
E --> J
F --> J
G --> J
H --> J
I --> J
Perfect for office, home, or industrial environments where devices communicate over local networks without internet dependency.
use std::sync::Arc;
use xlink::channels::lan::LanChannel;
use xlink::xLink;
let lan_channel: Arc<dyn xlink::core::traits::Channel> = Arc::new(LanChannel::new());
let sdk = xLink::new(capabilities, vec![lan_channel]).await?;
sdk.start().await?;
Ideal for ad-hoc networks, IoT deployments, and scenarios where devices form peer-to-peer mesh networks.
use std::sync::Arc;
use xlink::channels::mesh::MeshChannel;
let mesh_channel: Arc<dyn xlink::core::traits::Channel> = Arc::new(MeshChannel::new());
let sdk = xLink::new(capabilities, vec![mesh_channel]).await?;
Enterprise-grade encrypted group messaging with TreeKem forward secrecy and efficient broadcast.
use xlink::core::types::{DeviceId, MessagePayload};
let group_manager = sdk.group_manager();
group_manager.create_group(vec![alice_id, bob_id]).await?;
group_manager.broadcast_message(group_id, payload).await?;
Automatic stream handling for large files and video streams with chunking and reassembly.
use xlink::core::types::MessagePayload;
let large_data = std::fs::read("large_file.mp4")?;
sdk.send(recipient, MessagePayload::Binary(large_data)).await?;
// Automatically uses stream transmission for data > 32KB
๐ฆ Rust
|
๐ Required Features
|
|
Step 1: Define Device Capabilities
|
Step 2: Create SDK Instance
|
use std::collections::HashSet;
use std::sync::Arc;
use xlink::channels::memory::MemoryChannel;
use xlink::core::types::{
ChannelType, DeviceCapabilities, DeviceId, DeviceType, MessagePayload,
};
use xlink::xLink;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let alice_id = DeviceId::new();
let alice_caps = DeviceCapabilities {
device_id: alice_id,
device_type: DeviceType::Smartphone,
device_name: "Alice Phone".to_string(),
supported_channels: HashSet::from([ChannelType::Lan]),
battery_level: Some(80),
is_charging: false,
data_cost_sensitive: false,
};
let channel = Arc::new(MemoryChannel::new(handler, 50));
let sdk = xLink::new(alice_caps, vec![channel]).await?;
sdk.start().await?;
// Send a message
let bob_id = DeviceId::new();
sdk.send(bob_id, MessagePayload::Text("Hello!".to_string())).await?;
sdk.stop().await;
Ok(())
}
|
User Guide Complete usage guide |
API Reference Full API documentation |
Architecture System design docs |
Examples Code examples |
๐ Example 1: Simple ChatBasic point-to-point messaging between two devices. File: examples/simple_chat.rs
|
๐ฅ Example 2: Group ChatSecure group messaging with multiple participants. File: examples/group_chat.rs
|
๐ Example 3: Channel SwitchingDynamic channel management and switching. File: examples/channel_switching.rs
|
๐ก Example 4: Background DiscoveryDevice discovery in background mode. File: examples/background_discovery.rs
|
๐ฑ Example 5: Device MigrationExport and import SDK state for device transfer. File: examples/device_migration.rs
|
graph TB
subgraph Application Layer
A[Application]
end
subgraph SDK Core
B[UnifiedPush SDK]
C[Channel Router]
D[Capability Manager]
E[Metrics Collector]
end
subgraph Communication Layer
F[LAN Channel]
G[WiFi Channel]
H[Bluetooth Channel]
I[Mesh Channel]
J[Memory Channel]
K[Remote Channel]
end
subgraph Security Layer
L[Crypto Engine]
M[TreeKem]
end
subgraph Services
N[Group Manager]
O[Heartbeat Manager]
P[Discovery Manager]
Q[Stream Manager]
end
subgraph Storage Layer
R[File Storage]
S[Memory Storage]
T[Distributed Storage]
end
A --> B
B --> C
B --> D
B --> E
C --> F
C --> G
C --> H
C --> I
C --> J
C --> K
C --> L
C --> M
B --> N
B --> O
B --> P
B --> Q
C --> R
C --> S
C --> T
| Component | Description | Status |
|---|---|---|
| UnifiedPush SDK | Main SDK entry point managing all components | โ Stable |
| Channel Router | Intelligent routing based on capabilities and network | โ Stable |
| Capability Manager | Device and channel capability detection and management | โ Stable |
| Crypto Engine | X25519 key exchange, ChaCha20Poly1305 encryption | โ Stable |
| TreeKem | Group key management with forward secrecy | โ Stable |
| Group Manager | Group creation, membership, and broadcast | โ Stable |
| Heartbeat Manager | Connection health monitoring | โ Stable |
| Discovery Manager | mDNS and BLE device discovery | โ Stable |
| Stream Manager | Large file chunking and reassembly | โ Stable |
| Metrics Collector | Performance monitoring and diagnostics | โ Stable |
use xlink::core::types::{ChannelType, DeviceCapabilities, DeviceType};
let capabilities = DeviceCapabilities {
device_id: DeviceId::new(),
device_type: DeviceType::Smartphone,
device_name: "My Device".to_string(),
supported_channels: HashSet::from([
ChannelType::Lan,
ChannelType::BluetoothLE,
ChannelType::WiFiDirect,
]),
battery_level: Some(100),
is_charging: true,
data_cost_sensitive: false,
};
| Channel Type | Description | Use Case |
|---|---|---|
Lan |
Local Area Network communication | Office, home networks |
WiFiDirect |
WiFi direct communication | Wireless direct connection |
BluetoothLE |
Bluetooth Low Energy | Short-range, low power |
BluetoothMesh |
Bluetooth Mesh networking | Multi-hop mesh, IoT |
Internet |
Cloud/Internet communication | Remote messaging |
Memory |
In-memory channel (testing) | Testing, IPC |
| Option | Type | Default | Description |
|---|---|---|---|
device_id |
UUID | Auto-generated | Unique device identifier |
device_type |
Enum | Required | Device type (Smartphone, Laptop, etc.) |
device_name |
String | Required | Human-readable device name |
supported_channels |
Set | Required | Set of supported channel types |
battery_level |
Option |
None | Current battery percentage |
is_charging |
bool | false | Whether device is charging |
data_cost_sensitive |
bool | false | Optimize for data usage |
use xlink::core::types::ComplianceConfig;
let compliance = ComplianceConfig {
retention_days: 30, // Keep data for 30 days
auto_cleanup: true, // Enable automatic cleanup
};
# Run all tests
cargo test --all-features
# Run specific test categories
cargo test --test unit_core # Unit tests
cargo test --test integration_system # Integration tests
cargo test --test integration_group # Group messaging tests
cargo test --test integration_channels # Channel tests
# Run with coverage
cargo tarpaulin --out Html
# Run benchmarks
cargo bench
# Run specific test
cargo test test_name
| Category | Description | Files |
|---|---|---|
| Unit Tests | Core functionality tests | tests/unit_core.rs |
| Integration Tests | System integration tests | tests/integration_*.rs |
| Performance Tests | Benchmark tests | benches/performance.rs |
| DoS Protection | Security tests | tests/dos_protection_tests.rs |
| Memory Tests | Memory management tests | tests/test_memory_*.rs |
| Large File Tests | Stream handling tests | tests/large_file_transmission_tests.rs |
|
Message Processing
|
Latency (Memory Channel)
|
# Run benchmarks
cargo bench
# Available benchmarks:
# - bench_message_send: Message sending performance
# - bench_channel_router: Routing decision performance
# - bench_encryption: Encryption/decryption performance
# - bench_group_broadcast: Group broadcast performance
|
End-to-End Encryption X25519 + ChaCha20Poly1305 |
Group Forward Secrecy TreeKem key rotation |
DoS Protection Rate limiting (100 msg/sec) |
Message Signing Ed25519 signatures |
| Operation | Algorithm | Purpose |
|---|---|---|
| Key Exchange | X25519 | Secure key agreement |
| Encryption | ChaCha20Poly1305 | Authenticated encryption |
| Signatures | Ed25519 | Message authentication |
| Key Derivation | HKDF-SHA256 | Key material derivation |
| Hashing | SHA-256 | Integrity verification |
Please report security vulnerabilities to: security@example.com
gantt
title xlink Roadmap
dateFormat YYYY-MM
section Core Features
Multi-Channel Support :done, 2024-01, 2024-06
E2E Encryption :done, 2024-02, 2024-07
Group Messaging :active, 2024-05, 2024-10
section Advanced Features
Stream Management :active, 2024-06, 2024-11
Device Discovery :done, 2024-04, 2024-09
Performance Optimization :2024-10, 2025-02
section Platform Support
FFI Bindings :2024-08, 2025-01
Mobile Platform Support :2025-01, 2025-06
โ Completed
|
๐ง In Progress
|
๐ Planned
|
๐ก Future Ideas
|
๐ Report BugsFound a bug? |
๐ก Request FeaturesHave an idea? |
๐ง Submit PRsWant to contribute? |
git clone https://github.com/yourusername/xlink.gitgit checkout -b feature/amazing-featurecargo test --all-featuresgit commit -m 'Add amazing feature'git push origin feature/amazing-featurecargo fmt)|
Rust |
![]() Tokio |
![]() GitHub |
Crates.io |
๐ Dependencies - Built on these amazing projects:
๐ฅ Contributors - Thanks to all our amazing contributors!
๐ฌ Community - Special thanks to our community members
|
Issues Report bugs & issues |
Discussions Ask questions & share ideas |
GitHub View source code |
If you find this project useful, please consider giving it a โญ๏ธ!
Built with โค๏ธ by Kirky.X Kirky-X@outlook.com
ยฉ 2024 xlink. All rights reserved.