diff --git a/client/clientProgram.go b/client/clientProgram.go new file mode 100644 index 0000000..a87a574 --- /dev/null +++ b/client/clientProgram.go @@ -0,0 +1,37 @@ +package main + +import ( + "encoding/binary" + "log" + "math/bits" + "strconv" +) + +// This is an example client program and is a placeholder for a real life situation +// In thie example, the program has a message it needs to send, and it's given a connection +// from the pool to use. At the end of the program / function it releases the connection back tot he pool +func clientProgram(message string) { + + conn, err := requestLease() + if err != nil { + log.Printf("could not get connection from pool") + return + } + + log.Printf("attempted to send message '%s'", message) + integerMessage, err := strconv.Atoi(message) + if err != nil { + log.Printf("failed to conver message '%s' to an integer: %v", message, err) + return + } + + buf := make([]byte, 8) + binary.BigEndian.PutUint64(buf, uint64(integerMessage)) + _, err = conn.Write(buf[bits.LeadingZeros64(uint64(integerMessage))>>3:]) + if err != nil { + log.Printf("failed to write to socket: %v", err) + return + } + + releaseConnection(conn) +}