mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-30 10:10:21 +00:00
78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
|
# SpdyStream
|
||
|
|
||
|
A multiplexed stream library using spdy
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Client example (connecting to mirroring server without auth)
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/docker/spdystream"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
conn, err := net.Dial("tcp", "localhost:8080")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
spdyConn, err := spdystream.NewConnection(conn, false)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
go spdyConn.Serve(spdystream.NoOpStreamHandler)
|
||
|
stream, err := spdyConn.CreateStream(http.Header{}, nil, false)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
stream.Wait()
|
||
|
|
||
|
fmt.Fprint(stream, "Writing to stream")
|
||
|
|
||
|
buf := make([]byte, 25)
|
||
|
stream.Read(buf)
|
||
|
fmt.Println(string(buf))
|
||
|
|
||
|
stream.Close()
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Server example (mirroring server without auth)
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/docker/spdystream"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
listener, err := net.Listen("tcp", "localhost:8080")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
for {
|
||
|
conn, err := listener.Accept()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
spdyConn, err := spdystream.NewConnection(conn, true)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
go spdyConn.Serve(spdystream.MirrorStreamHandler)
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Copyright and license
|
||
|
|
||
|
Copyright © 2014-2015 Docker, Inc. All rights reserved, except as follows. Code is released under the Apache 2.0 license. The README.md file, and files in the "docs" folder are licensed under the Creative Commons Attribution 4.0 International License under the terms and conditions set forth in the file "LICENSE.docs". You may obtain a duplicate copy of the same license, titled CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/.
|