# Session 15: Leaf Nodes

## Summary

Leaf node connections — lightweight connections from edge servers to hub servers. Simpler than full routes but with subject interest propagation.

## Scope

| Go File | Features | Feature IDs | Go LOC |
|---------|----------|-------------|--------|
| server/leafnode.go | 71 | 1979–2049 | 3,091 |
| **Total** | **71** | | **3,091** |

## .NET Classes

- `LeafNodeHandler` — leaf node connection management
- `LeafNodeCfg` — leaf node configuration
- `LeafNodeOption` — leaf node reload option
- `ClientConnection` (partial — leafnode-specific methods)

## Test Files

| Test File | Tests | Test IDs |
|-----------|-------|----------|
| server/leafnode_test.go | 111 | 1906–2016 |
| server/leafnode_proxy_test.go | 9 | 1897–1905 |
| **Total** | **120** | |

## Dependencies

- Session 01 (Foundation Types)
- Session 07 (Protocol Parser)
- Session 08 (Client Connection)
- Session 09 (Server Core Part 1)
- Session 14 (Routes — shared routing infrastructure)

## .NET Target Location

- `dotnet/src/ZB.MOM.NatsNet.Server/LeafNode/`

## Notes

- 111 + 9 = 120 tests — this is a test-heavy session
- Leaf nodes support TLS, auth, and subject deny lists
- WebSocket transport for leaf nodes adds complexity
