package ldap

import (
	"bytes"
	"log"

	ber "github.com/go-asn1-ber/asn1-ber"
)

const LDAP_TRACE_PREFIX = "ldap-trace: "

// debugging type
//     - has a Printf method to write the debug output
type debugging bool

// Enable controls debugging mode.
func (debug *debugging) Enable(b bool) {
	*debug = debugging(b)
}

// Printf writes debug output.
func (debug debugging) Printf(format string, args ...interface{}) {
	if debug {
		format = LDAP_TRACE_PREFIX + format
		log.Printf(format, args...)
	}
}

// PrintPacket dumps a packet.
func (debug debugging) PrintPacket(packet *ber.Packet) {
	if debug {
		var b bytes.Buffer
		ber.WritePacket(&b, packet)
		textToPrint := LDAP_TRACE_PREFIX + b.String()
		log.Printf(textToPrint)
	}
}