55 lines
1006 B
Go
55 lines
1006 B
Go
package ipp
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// URIValue represents a ipp URI value attribute
|
|
type URIValue struct {
|
|
name string
|
|
value string
|
|
}
|
|
|
|
// NewURIValue creates a new URIValue attribute
|
|
func NewURIValue(name, value string) *URIValue {
|
|
u := new(URIValue)
|
|
u.name = name
|
|
u.value = value
|
|
return u
|
|
}
|
|
|
|
// Name returns the name of the attribute
|
|
func (u URIValue) Name() string {
|
|
return u.name
|
|
}
|
|
|
|
// Value returns the value of the attribute
|
|
func (u URIValue) Value() string {
|
|
return u.value
|
|
}
|
|
|
|
func (u URIValue) String() string {
|
|
return u.name + ":" + u.value
|
|
}
|
|
|
|
func (u *URIValue) valueTag() tag {
|
|
return uriValueTag
|
|
}
|
|
|
|
func (u *URIValue) unmarshal(byteStream io.Reader) {
|
|
u.name, u.value = unmarshalSingleValue(byteStream)
|
|
}
|
|
|
|
func (u *URIValue) marshal() []byte {
|
|
res := make([]byte, u.size())
|
|
res[0] = byte(uriValueTag)
|
|
marshalNameValue(u.name, u.value, res[1:])
|
|
return res
|
|
}
|
|
func (u *URIValue) size() int {
|
|
l := 1 + 4 // The attribute tag + 2 lengths
|
|
l += len(u.name)
|
|
l += len(u.value)
|
|
return l
|
|
}
|