Skip to content

Commit

Permalink
Add support for nullable strings.
Browse files Browse the repository at this point in the history
  • Loading branch information
vlad-arista committed Nov 1, 2017
1 parent 606f9ba commit 5a79f9f
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 0 deletions.
1 change: 1 addition & 0 deletions packet_decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ type packetDecoder interface {
getVarintBytes() ([]byte, error)
getRawBytes(length int) ([]byte, error)
getString() (string, error)
getNullableString() (*string, error)
getInt32Array() ([]int32, error)
getInt64Array() ([]int64, error)
getStringArray() ([]string, error)
Expand Down
1 change: 1 addition & 0 deletions packet_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type packetEncoder interface {
putVarintBytes(in []byte) error
putRawBytes(in []byte) error
putString(in string) error
putNullableString(in *string) error
putStringArray(in []string) error
putInt32Array(in []int32) error
putInt64Array(in []int64) error
Expand Down
8 changes: 8 additions & 0 deletions prep_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ func (pe *prepEncoder) putRawBytes(in []byte) error {
return nil
}

func (pe *prepEncoder) putNullableString(in *string) error {
if in == nil {
pe.length += 2
return nil
}
return pe.putString(*in)
}

func (pe *prepEncoder) putString(in string) error {
pe.length += 2
if len(in) > math.MaxInt16 {
Expand Down
9 changes: 9 additions & 0 deletions real_decoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,15 @@ func (rd *realDecoder) getString() (string, error) {
return tmpStr, nil
}

func (rd *realDecoder) getNullableString() (*string, error) {
tmp, err := rd.getInt16()
if err != nil || tmp == -1 {
return nil, err
}
str, err := rd.getString()
return &str, err
}

func (rd *realDecoder) getInt32Array() ([]int32, error) {
if rd.remaining() < 4 {
rd.off = len(rd.raw)
Expand Down
8 changes: 8 additions & 0 deletions real_encoder.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,14 @@ func (re *realEncoder) putString(in string) error {
return nil
}

func (re *realEncoder) putNullableString(in *string) error {
if in == nil {
re.putInt16(-1)
return nil
}
return re.putString(*in)
}

func (re *realEncoder) putStringArray(in []string) error {
err := re.putArrayLength(len(in))
if err != nil {
Expand Down

0 comments on commit 5a79f9f

Please sign in to comment.