examples: More examples

This commit is contained in:
2025-11-16 16:00:31 -05:00
parent 0727609067
commit 5f503021bf
4 changed files with 289 additions and 27 deletions

View File

@@ -4,10 +4,9 @@ import "os"
import "io"
import "fmt"
import "log"
import "net"
import "time"
import "errors"
// import "context"
import "context"
import "git.tebibyte.media/sashakoshka/hopp"
import "git.tebibyte.media/sashakoshka/hopp/examples/ping"
@@ -25,41 +24,37 @@ func main() {
handleErr(1, err)
go func() {
defer fmt.Fprintf(os.Stdout, "(i) disconnected\n")
message := ping.MessagePing(0)
for {
message, _, err := ping.Receive(trans)
if err != nil {
if !errors.Is(err, io.EOF) {
handleErr(1, err)
}
break
}
switch message := message.(type) {
case *ping.MessagePong:
log.Printf("--> pong (%d) from %v", message, address)
}
log.Printf("<-- ping (%d)", message)
_, err := ping.Send(trans, &message)
handleErr(1, err)
message ++
time.Sleep(time.Second)
}
}()
message := ping.MessagePing(0)
defer fmt.Fprintf(os.Stdout, "(i) disconnected\n")
for {
log.Printf("<-- ping (%d)", message)
_, err := ping.Send(trans, &message)
handleErr(1, err)
message ++
time.Sleep(time.Second)
message, _, err := ping.Receive(trans)
if err != nil {
if !errors.Is(err, io.EOF) {
handleErr(1, err)
}
break
}
switch message := message.(type) {
case *ping.MessagePong:
log.Printf("--> pong (%d) from %v", message, address)
}
}
}
func dial(address string) (hopp.Conn, error) {
// ctx, done := context.WithTimeout(context.Background(), 16 * time.Second)
// defer done()
// conn, err := hopp.Dial(ctx, "tcp", address, nil)
// if err != nil { return nil, err }
// return conn, nil
underlying, err := net.Dial("tcp", address)
ctx, done := context.WithTimeout(context.Background(), 16 * time.Second)
defer done()
conn, err := hopp.Dial(ctx, "tcp", address, nil)
if err != nil { return nil, err }
conn := hopp.AdaptA(underlying, hopp.ServerSide)
return conn, nil
}