package mtproto

import (
	

	

	
)

type logType struct {
	ID   uint32
	Name string
}

// LogAttr returns the type info as an inline log group.
func ( logType) () log.Attr {
	 := []log.Attr{log.String("type_id", fmt.Sprintf("0x%x", .ID))}
	if .Name != "" {
		 = append(, log.String("type_name", .Name))
	}
	return log.Group("", ...)
}

func ( *Conn) ( *bin.Buffer) log.Helper {
	return .logWithType().With(log.Int("size_bytes", .Len()))
}

func ( *Conn) ( *bin.Buffer) log.Helper {
	,  := .PeekID()
	if  != nil {
		// Type info not available.
		return .log
	}

	return .logWithTypeID()
}

func ( *Conn) ( uint32) log.Helper {
	return .log.With(logType{
		ID:   ,
		Name: .types.Get(),
	}.LogAttr())
}