quicsilver 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +9 -1
- data/.github/workflows/cibuildgem.yaml +117 -0
- data/.gitignore +8 -1
- data/CHANGELOG.md +82 -0
- data/Gemfile.lock +27 -2
- data/README.md +205 -29
- data/Rakefile +75 -3
- data/benchmarks/baseline.rb +175 -0
- data/benchmarks/compare.rb +398 -0
- data/benchmarks/helpers.rb +138 -64
- data/benchmarks/latency.rb +128 -0
- data/benchmarks/loss.rb +193 -0
- data/benchmarks/mobile.rb +125 -0
- data/docs/connection_identity.md +141 -0
- data/examples/README.md +44 -91
- data/examples/benchmark.rb +191 -0
- data/examples/connection_pool_demo.rb +47 -0
- data/examples/example_helper.rb +69 -0
- data/examples/falcon_middleware.rb +44 -0
- data/examples/feature_demo.rb +125 -0
- data/examples/grpc_style.rb +97 -0
- data/examples/latency_aware_routing.rb +382 -0
- data/examples/lifecycle_drain.rb +264 -0
- data/examples/minimal_http3_server.rb +6 -18
- data/examples/priorities.rb +60 -0
- data/examples/protocol_http_server.rb +31 -0
- data/examples/rack_http3_server.rb +8 -20
- data/examples/rails_feature_test.rb +280 -0
- data/examples/server_stats.rb +117 -0
- data/examples/simple_client_test.rb +5 -5
- data/examples/streaming_sse.rb +33 -0
- data/examples/trailers.rb +69 -0
- data/examples/webtransport_smoke.rb +546 -0
- data/examples/worker_load_balancing.rb +425 -0
- data/ext/quicsilver/extconf.rb +111 -12
- data/ext/quicsilver/include/msquic.h +2226 -0
- data/ext/quicsilver/include/msquic_posix.h +696 -0
- data/ext/quicsilver/include/quic_sal_stub.h +314 -0
- data/ext/quicsilver/msquic_patch.rb +68 -0
- data/ext/quicsilver/patches/reliable-reset.patch +723 -0
- data/ext/quicsilver/patches/stream-final-size.patch +47 -0
- data/ext/quicsilver/quicsilver.c +1646 -189
- data/lib/quicsilver/client/client.rb +546 -88
- data/lib/quicsilver/client/connection_pool.rb +202 -0
- data/lib/quicsilver/client/request.rb +106 -14
- data/lib/quicsilver/errors.rb +39 -0
- data/lib/quicsilver/libmsquic.2.dylib +0 -0
- data/lib/quicsilver/protocol/adapter.rb +196 -0
- data/lib/quicsilver/protocol/capsule.rb +38 -0
- data/lib/quicsilver/protocol/connect_stream_decoder.rb +75 -0
- data/lib/quicsilver/protocol/control_stream_parser.rb +117 -0
- data/lib/quicsilver/protocol/datagram.rb +40 -0
- data/lib/quicsilver/protocol/frame_parser.rb +141 -0
- data/lib/quicsilver/protocol/frame_reader.rb +84 -0
- data/lib/quicsilver/protocol/frames.rb +137 -10
- data/lib/quicsilver/protocol/priority.rb +65 -0
- data/lib/quicsilver/protocol/qpack/decoder.rb +4 -42
- data/lib/quicsilver/protocol/qpack/encoder.rb +49 -21
- data/lib/quicsilver/protocol/qpack/header_block_decoder.rb +16 -1
- data/lib/quicsilver/protocol/qpack/huffman.rb +4 -4
- data/lib/quicsilver/protocol/request_encoder.rb +6 -3
- data/lib/quicsilver/protocol/request_parser.rb +43 -141
- data/lib/quicsilver/protocol/response_encoder.rb +40 -5
- data/lib/quicsilver/protocol/response_parser.rb +26 -128
- data/lib/quicsilver/protocol/stream_input.rb +98 -0
- data/lib/quicsilver/protocol/stream_output.rb +59 -0
- data/lib/quicsilver/protocol/unidirectional_stream.rb +12 -0
- data/lib/quicsilver/protocol/web_transport.rb +214 -0
- data/lib/quicsilver/rack/context.rb +33 -0
- data/lib/quicsilver/response.rb +40 -0
- data/lib/quicsilver/server/rack_adapter.rb +77 -0
- data/lib/quicsilver/server/receive_queue.rb +106 -0
- data/lib/quicsilver/server/request_handler.rb +111 -48
- data/lib/quicsilver/server/request_registry.rb +18 -5
- data/lib/quicsilver/server/scheduler.rb +50 -0
- data/lib/quicsilver/server/schedulers/fiber_scheduler.rb +79 -0
- data/lib/quicsilver/server/schedulers/thread_scheduler.rb +76 -0
- data/lib/quicsilver/server/server.rb +848 -104
- data/lib/quicsilver/server/web_transport_flow_control.rb +270 -0
- data/lib/quicsilver/server/web_transport_manager.rb +281 -0
- data/lib/quicsilver/server/web_transport_registry.rb +40 -0
- data/lib/quicsilver/server/web_transport_session.rb +812 -0
- data/lib/quicsilver/server/web_transport_stream.rb +326 -0
- data/lib/quicsilver/transport/configuration.rb +113 -11
- data/lib/quicsilver/transport/connection.rb +376 -132
- data/lib/quicsilver/transport/connection_stats.rb +53 -0
- data/lib/quicsilver/transport/event_loop.rb +36 -0
- data/lib/quicsilver/transport/inbound_stream.rb +21 -1
- data/lib/quicsilver/transport/stream.rb +18 -3
- data/lib/quicsilver/transport/stream_event.rb +25 -2
- data/lib/quicsilver/transport/stream_id.rb +26 -0
- data/lib/quicsilver/version.rb +1 -1
- data/lib/quicsilver.rb +45 -11
- data/lib/rackup/handler/quicsilver.rb +57 -38
- data/quicsilver.gemspec +17 -2
- metadata +120 -10
- data/benchmarks/concurrent.rb +0 -110
- data/benchmarks/quicsilver_server.rb +0 -46
- data/benchmarks/rails.rb +0 -170
- data/benchmarks/throughput.rb +0 -113
- data/examples/setup_certs.sh +0 -57
data/examples/setup_certs.sh
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# Quicsilver Certificate Setup
|
|
4
|
-
# This script generates self-signed certificates for QUIC testing
|
|
5
|
-
|
|
6
|
-
echo "🔐 Generating certificates for Quicsilver QUIC testing..."
|
|
7
|
-
|
|
8
|
-
# Create certs directory if it doesn't exist
|
|
9
|
-
mkdir -p ../certs
|
|
10
|
-
cd ../certs
|
|
11
|
-
|
|
12
|
-
# Create OpenSSL config with proper TLS server extensions
|
|
13
|
-
cat > openssl.conf << 'EOF'
|
|
14
|
-
[req]
|
|
15
|
-
distinguished_name = req_distinguished_name
|
|
16
|
-
req_extensions = v3_req
|
|
17
|
-
prompt = no
|
|
18
|
-
|
|
19
|
-
[req_distinguished_name]
|
|
20
|
-
CN = localhost
|
|
21
|
-
O = QuicsilverTest
|
|
22
|
-
C = US
|
|
23
|
-
|
|
24
|
-
[v3_req]
|
|
25
|
-
keyUsage = keyEncipherment, dataEncipherment
|
|
26
|
-
extendedKeyUsage = serverAuth
|
|
27
|
-
subjectAltName = @alt_names
|
|
28
|
-
|
|
29
|
-
[alt_names]
|
|
30
|
-
DNS.1 = localhost
|
|
31
|
-
IP.1 = 127.0.0.1
|
|
32
|
-
EOF
|
|
33
|
-
|
|
34
|
-
# Generate private key and certificate
|
|
35
|
-
echo "📝 Generating private key..."
|
|
36
|
-
openssl genrsa -out server.key 2048
|
|
37
|
-
|
|
38
|
-
echo "📜 Generating certificate..."
|
|
39
|
-
openssl req -new -x509 -key server.key -out server.crt -days 365 \
|
|
40
|
-
-config openssl.conf -extensions v3_req
|
|
41
|
-
|
|
42
|
-
# Create PKCS#12 format (optional, for other tools)
|
|
43
|
-
echo "📦 Creating PKCS#12 bundle..."
|
|
44
|
-
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt \
|
|
45
|
-
-passout pass:password -name "localhost"
|
|
46
|
-
|
|
47
|
-
# Clean up
|
|
48
|
-
rm openssl.conf
|
|
49
|
-
|
|
50
|
-
echo "✅ Certificate files created:"
|
|
51
|
-
echo " 📄 server.crt - Certificate file"
|
|
52
|
-
echo " 🔑 server.key - Private key file"
|
|
53
|
-
echo " 📦 server.p12 - PKCS#12 bundle (password: 'password')"
|
|
54
|
-
echo ""
|
|
55
|
-
echo "🚀 You can now run:"
|
|
56
|
-
echo " Terminal 1: ruby examples/test_server.rb"
|
|
57
|
-
echo " Terminal 2: ruby examples/test_connection.rb"
|