auto-discovery 0.2.0

A general-purpose network and system service discovery library for Rust applications
Documentation
# Auto Discovery Examples


This directory contains various examples demonstrating the auto-discovery library functionality.

## Examples Overview


### 🚀 [`basic_usage.rs`]basic_usage.rs

**Comprehensive introduction to the library**
- Service registration (HTTP and SSH services)
- Multi-protocol discovery (mDNS and UPnP)
- Protocol filtering
- Proper error handling and cleanup
- **Best for**: New users wanting to understand all core features

### 🔍 [`simple_discovery.rs`]simple_discovery.rs

**Minimal, beginner-friendly example**
- Basic service registration
- Simple service discovery
- Clean resource management
- **Best for**: Quick start and learning the basics

### 🏗️ [`builder_pattern.rs`]builder_pattern.rs

**Advanced configuration using builder patterns**
- Complex service configuration
- Custom attributes and metadata
- Builder pattern demonstration
- **Best for**: Understanding advanced configuration options

### 🌐 [`cross_protocol.rs`]cross_protocol.rs

**Multi-protocol service discovery**
- Simultaneous use of multiple discovery protocols
- Protocol-specific service registration
- Cross-protocol compatibility
- **Best for**: Enterprise scenarios with mixed environments

### 🔒 [`security_verification.rs`]security_verification.rs

**Security features and service verification**
- Service authentication
- TSIG-based verification
- Security policy enforcement
- **Best for**: Security-conscious deployments

### 🏭 [`production_safety.rs`]production_safety.rs

**Production-ready implementation**
- Comprehensive error handling
- Health monitoring
- Resource management
- Graceful degradation
- **Best for**: Production deployments

### 🔐 [`multi_protocol_security.rs`]multi_protocol_security.rs

**Advanced security across multiple protocols**
- Multi-protocol security policies
- Advanced authentication
- Security auditing
- **Best for**: High-security environments

### 🌍 [`dns_sd_example.rs`]dns_sd_example.rs

**DNS Service Discovery specific example**
- DNS-SD protocol usage
- Domain-specific service registration
- DNS-SD specific features
- **Best for**: DNS-SD specific deployments

## Running Examples


To run any example:

```bash
# Run a specific example

cargo run --example basic_usage

# Run with debug output

RUST_LOG=debug cargo run --example simple_discovery

# Build all examples (check for compilation errors)

cargo check --examples
```

## Example Progression


For learning the library, we recommend this progression:

1. **Start here**: `simple_discovery.rs` - Learn the basics
2. **Core features**: `basic_usage.rs` - Understand all main functionality
3. **Advanced config**: `builder_pattern.rs` - Learn configuration patterns
4. **Multi-protocol**: `cross_protocol.rs` - Understand protocol integration
5. **Security**: `security_verification.rs` - Add security features
6. **Production**: `production_safety.rs` - Production deployment patterns

## Common Patterns


### Service Registration

```rust
let service = ServiceInfo::new(
    "My Service",
    "_http._tcp",
    8080,
    Some(vec![("version", "1.0")])
)?;

discovery.register_service(service).await?;
```

### Service Discovery

```rust
// Discover all services
let services = discovery.discover_services(None).await?;

// Filter by protocol
let mdns_services = discovery.discover_services(Some(ProtocolType::Mdns)).await?;
```

### Configuration

```rust
let config = DiscoveryConfig::new()
    .with_service_type(ServiceType::new("_http._tcp")?)
    .with_protocol(ProtocolType::Mdns)
    .with_timeout(Duration::from_secs(5));
```

## Troubleshooting


- **Service not found**: Check network connectivity and firewall settings
- **Registration fails**: Verify service type format and port availability
- **Timeout errors**: Increase timeout in configuration
- **Permission issues**: Run with appropriate network permissions

For more detailed documentation, see the [main project README](../README.md).