A working proxy exists.
This commit is contained in:
@@ -7,53 +7,53 @@ import (
|
||||
"io"
|
||||
)
|
||||
|
||||
type integer struct {
|
||||
type Integer struct {
|
||||
name string
|
||||
values []int32
|
||||
}
|
||||
|
||||
func NewInteger(name string, values ...int32) *integer {
|
||||
e := new(integer)
|
||||
func NewInteger(name string, values ...int32) *Integer {
|
||||
e := new(Integer)
|
||||
e.name = name
|
||||
e.values = values
|
||||
return e
|
||||
}
|
||||
|
||||
func (i integer) Name() string {
|
||||
func (i Integer) Name() string {
|
||||
return i.name
|
||||
}
|
||||
|
||||
func (i integer) String() string {
|
||||
func (i Integer) String() string {
|
||||
return i.name + ":" + fmt.Sprint(i.values)
|
||||
}
|
||||
|
||||
func (i *integer) valueTag() tag {
|
||||
func (i *Integer) valueTag() tag {
|
||||
return integerValueTag
|
||||
}
|
||||
|
||||
func (i *integer) size() int {
|
||||
func (i *Integer) size() int {
|
||||
return 9 + len(i.name) // The attribute tag + 2 lengths
|
||||
}
|
||||
|
||||
func (i *integer) addValue(v interface{}) {
|
||||
func (i *Integer) addValue(v interface{}) {
|
||||
i.values = append(i.values, v.(int32))
|
||||
}
|
||||
|
||||
func (i *integer) marshal() []byte {
|
||||
func (i *Integer) marshal() []byte {
|
||||
return marshalInteger(integerValueTag, i.name, i.values)
|
||||
}
|
||||
|
||||
func marshalInteger(t tag, name string, values []int32) []byte {
|
||||
l := 9 + len(name)
|
||||
l := 9 + len(name) + 9*(len(values)-1)
|
||||
b := make([]byte, 0, l)
|
||||
buf := bytes.NewBuffer(b)
|
||||
buf.WriteByte(byte(integerValueTag))
|
||||
buf.WriteByte(byte(t))
|
||||
binary.Write(buf, binary.BigEndian, uint16(len(name)))
|
||||
buf.WriteString(name)
|
||||
binary.Write(buf, binary.BigEndian, uint16(4))
|
||||
binary.Write(buf, binary.BigEndian, values[0])
|
||||
for _, v := range values[1:] {
|
||||
buf.WriteByte(byte(integerValueTag))
|
||||
buf.WriteByte(byte(t))
|
||||
binary.Write(buf, binary.BigEndian, uint16(0))
|
||||
binary.Write(buf, binary.BigEndian, uint16(4))
|
||||
binary.Write(buf, binary.BigEndian, v)
|
||||
|
||||
Reference in New Issue
Block a user