udp.go 756 B

12345678910111213141516171819202122232425262728293031323334
  1. package statsd
  2. import (
  3. "net"
  4. "time"
  5. )
  6. // udpWriter is an internal class wrapping around management of UDP connection
  7. type udpWriter struct {
  8. conn net.Conn
  9. }
  10. // New returns a pointer to a new udpWriter given an addr in the format "hostname:port".
  11. func newUDPWriter(addr string, _ time.Duration) (*udpWriter, error) {
  12. udpAddr, err := net.ResolveUDPAddr("udp", addr)
  13. if err != nil {
  14. return nil, err
  15. }
  16. conn, err := net.DialUDP("udp", nil, udpAddr)
  17. if err != nil {
  18. return nil, err
  19. }
  20. writer := &udpWriter{conn: conn}
  21. return writer, nil
  22. }
  23. // Write data to the UDP connection with no error handling
  24. func (w *udpWriter) Write(data []byte) (int, error) {
  25. return w.conn.Write(data)
  26. }
  27. func (w *udpWriter) Close() error {
  28. return w.conn.Close()
  29. }