| /* |
| * Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University |
| * Copyright (c) 2011, 2012 Open Networking Foundation |
| * Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler. |
| * Copyright 2018, Red Hat, Inc. |
| */ |
| // Automatically generated by LOXI from template module.go |
| // Do not modify |
| |
| package of15 |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| "net" |
| |
| "github.com/opencord/goloxi" |
| ) |
| |
| type Oxs struct { |
| TypeLen uint32 |
| } |
| |
| type IOxs interface { |
| goloxi.Serializable |
| GetTypeLen() uint32 |
| GetOXSName() string |
| GetOXSValue() interface{} |
| } |
| |
| func (self *Oxs) GetTypeLen() uint32 { |
| return self.TypeLen |
| } |
| |
| func (self *Oxs) SetTypeLen(v uint32) { |
| self.TypeLen = v |
| } |
| |
| func (self *Oxs) Serialize(encoder *goloxi.Encoder) error { |
| |
| encoder.PutUint32(uint32(self.TypeLen)) |
| |
| return nil |
| } |
| |
| func DecodeOxs(decoder *goloxi.Decoder) (IOxs, error) { |
| _oxs := &Oxs{} |
| if decoder.Length() < 4 { |
| return nil, fmt.Errorf("Oxs packet too short: %d < 4", decoder.Length()) |
| } |
| _oxs.TypeLen = uint32(decoder.ReadUint32()) |
| |
| switch _oxs.TypeLen { |
| case 2147616776: |
| return DecodeOxsByteCount(_oxs, decoder) |
| case 2147614728: |
| return DecodeOxsDuration(_oxs, decoder) |
| case 2147615748: |
| return DecodeOxsFlowCount(_oxs, decoder) |
| case 2147616264: |
| return DecodeOxsPacketCount(_oxs, decoder) |
| case 2147615240: |
| return DecodeOxsIdleTime(_oxs, decoder) |
| default: |
| return nil, fmt.Errorf("Invalid type '%d' for 'Oxs'", _oxs.TypeLen) |
| } |
| } |
| |
| func NewOxs(_type_len uint32) *Oxs { |
| obj := &Oxs{} |
| obj.TypeLen = _type_len |
| return obj |
| } |
| |
| type OxsByteCount struct { |
| *Oxs |
| Value uint64 |
| } |
| |
| type IOxsByteCount interface { |
| IOxs |
| GetValue() uint64 |
| } |
| |
| func (self *OxsByteCount) GetValue() uint64 { |
| return self.Value |
| } |
| |
| func (self *OxsByteCount) SetValue(v uint64) { |
| self.Value = v |
| } |
| |
| func (self *OxsByteCount) Serialize(encoder *goloxi.Encoder) error { |
| if err := self.Oxs.Serialize(encoder); err != nil { |
| return err |
| } |
| |
| encoder.PutUint64(uint64(self.Value)) |
| |
| return nil |
| } |
| |
| func DecodeOxsByteCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsByteCount, error) { |
| _oxsbytecount := &OxsByteCount{Oxs: parent} |
| if decoder.Length() < 8 { |
| return nil, fmt.Errorf("OxsByteCount packet too short: %d < 8", decoder.Length()) |
| } |
| _oxsbytecount.Value = uint64(decoder.ReadUint64()) |
| return _oxsbytecount, nil |
| } |
| |
| func NewOxsByteCount() *OxsByteCount { |
| obj := &OxsByteCount{ |
| Oxs: NewOxs(2147616776), |
| } |
| return obj |
| } |
| func (self *OxsByteCount) GetOXSName() string { |
| return "byte_count" |
| } |
| |
| func (self *OxsByteCount) GetOXSValue() interface{} { |
| return self.Value |
| } |
| |
| func (self *OxsByteCount) MarshalJSON() ([]byte, error) { |
| var value interface{} = self.GetOXSValue() |
| switch t := value.(type) { |
| case net.HardwareAddr: |
| value = t.String() |
| case net.IP: |
| value = t.String() |
| default: |
| if s, ok := t.(fmt.Stringer); ok { |
| value = s.String() |
| } else { |
| value = t |
| } |
| } |
| |
| jsonValue, err := json.Marshal(value) |
| if err != nil { |
| return nil, err |
| } |
| return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil |
| } |
| |
| type OxsDuration struct { |
| *Oxs |
| Value uint64 |
| } |
| |
| type IOxsDuration interface { |
| IOxs |
| GetValue() uint64 |
| } |
| |
| func (self *OxsDuration) GetValue() uint64 { |
| return self.Value |
| } |
| |
| func (self *OxsDuration) SetValue(v uint64) { |
| self.Value = v |
| } |
| |
| func (self *OxsDuration) Serialize(encoder *goloxi.Encoder) error { |
| if err := self.Oxs.Serialize(encoder); err != nil { |
| return err |
| } |
| |
| encoder.PutUint64(uint64(self.Value)) |
| |
| return nil |
| } |
| |
| func DecodeOxsDuration(parent *Oxs, decoder *goloxi.Decoder) (*OxsDuration, error) { |
| _oxsduration := &OxsDuration{Oxs: parent} |
| if decoder.Length() < 8 { |
| return nil, fmt.Errorf("OxsDuration packet too short: %d < 8", decoder.Length()) |
| } |
| _oxsduration.Value = uint64(decoder.ReadUint64()) |
| return _oxsduration, nil |
| } |
| |
| func NewOxsDuration() *OxsDuration { |
| obj := &OxsDuration{ |
| Oxs: NewOxs(2147614728), |
| } |
| return obj |
| } |
| func (self *OxsDuration) GetOXSName() string { |
| return "duration" |
| } |
| |
| func (self *OxsDuration) GetOXSValue() interface{} { |
| return self.Value |
| } |
| |
| func (self *OxsDuration) MarshalJSON() ([]byte, error) { |
| var value interface{} = self.GetOXSValue() |
| switch t := value.(type) { |
| case net.HardwareAddr: |
| value = t.String() |
| case net.IP: |
| value = t.String() |
| default: |
| if s, ok := t.(fmt.Stringer); ok { |
| value = s.String() |
| } else { |
| value = t |
| } |
| } |
| |
| jsonValue, err := json.Marshal(value) |
| if err != nil { |
| return nil, err |
| } |
| return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil |
| } |
| |
| type OxsFlowCount struct { |
| *Oxs |
| Value uint32 |
| } |
| |
| type IOxsFlowCount interface { |
| IOxs |
| GetValue() uint32 |
| } |
| |
| func (self *OxsFlowCount) GetValue() uint32 { |
| return self.Value |
| } |
| |
| func (self *OxsFlowCount) SetValue(v uint32) { |
| self.Value = v |
| } |
| |
| func (self *OxsFlowCount) Serialize(encoder *goloxi.Encoder) error { |
| if err := self.Oxs.Serialize(encoder); err != nil { |
| return err |
| } |
| |
| encoder.PutUint32(uint32(self.Value)) |
| |
| return nil |
| } |
| |
| func DecodeOxsFlowCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsFlowCount, error) { |
| _oxsflowcount := &OxsFlowCount{Oxs: parent} |
| if decoder.Length() < 4 { |
| return nil, fmt.Errorf("OxsFlowCount packet too short: %d < 4", decoder.Length()) |
| } |
| _oxsflowcount.Value = uint32(decoder.ReadUint32()) |
| return _oxsflowcount, nil |
| } |
| |
| func NewOxsFlowCount() *OxsFlowCount { |
| obj := &OxsFlowCount{ |
| Oxs: NewOxs(2147615748), |
| } |
| return obj |
| } |
| func (self *OxsFlowCount) GetOXSName() string { |
| return "flow_count" |
| } |
| |
| func (self *OxsFlowCount) GetOXSValue() interface{} { |
| return self.Value |
| } |
| |
| func (self *OxsFlowCount) MarshalJSON() ([]byte, error) { |
| var value interface{} = self.GetOXSValue() |
| switch t := value.(type) { |
| case net.HardwareAddr: |
| value = t.String() |
| case net.IP: |
| value = t.String() |
| default: |
| if s, ok := t.(fmt.Stringer); ok { |
| value = s.String() |
| } else { |
| value = t |
| } |
| } |
| |
| jsonValue, err := json.Marshal(value) |
| if err != nil { |
| return nil, err |
| } |
| return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil |
| } |
| |
| type OxsIdleTime struct { |
| *Oxs |
| Value uint64 |
| } |
| |
| type IOxsIdleTime interface { |
| IOxs |
| GetValue() uint64 |
| } |
| |
| func (self *OxsIdleTime) GetValue() uint64 { |
| return self.Value |
| } |
| |
| func (self *OxsIdleTime) SetValue(v uint64) { |
| self.Value = v |
| } |
| |
| func (self *OxsIdleTime) Serialize(encoder *goloxi.Encoder) error { |
| if err := self.Oxs.Serialize(encoder); err != nil { |
| return err |
| } |
| |
| encoder.PutUint64(uint64(self.Value)) |
| |
| return nil |
| } |
| |
| func DecodeOxsIdleTime(parent *Oxs, decoder *goloxi.Decoder) (*OxsIdleTime, error) { |
| _oxsidletime := &OxsIdleTime{Oxs: parent} |
| if decoder.Length() < 8 { |
| return nil, fmt.Errorf("OxsIdleTime packet too short: %d < 8", decoder.Length()) |
| } |
| _oxsidletime.Value = uint64(decoder.ReadUint64()) |
| return _oxsidletime, nil |
| } |
| |
| func NewOxsIdleTime() *OxsIdleTime { |
| obj := &OxsIdleTime{ |
| Oxs: NewOxs(2147615240), |
| } |
| return obj |
| } |
| func (self *OxsIdleTime) GetOXSName() string { |
| return "idle_time" |
| } |
| |
| func (self *OxsIdleTime) GetOXSValue() interface{} { |
| return self.Value |
| } |
| |
| func (self *OxsIdleTime) MarshalJSON() ([]byte, error) { |
| var value interface{} = self.GetOXSValue() |
| switch t := value.(type) { |
| case net.HardwareAddr: |
| value = t.String() |
| case net.IP: |
| value = t.String() |
| default: |
| if s, ok := t.(fmt.Stringer); ok { |
| value = s.String() |
| } else { |
| value = t |
| } |
| } |
| |
| jsonValue, err := json.Marshal(value) |
| if err != nil { |
| return nil, err |
| } |
| return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil |
| } |
| |
| type OxsPacketCount struct { |
| *Oxs |
| Value uint64 |
| } |
| |
| type IOxsPacketCount interface { |
| IOxs |
| GetValue() uint64 |
| } |
| |
| func (self *OxsPacketCount) GetValue() uint64 { |
| return self.Value |
| } |
| |
| func (self *OxsPacketCount) SetValue(v uint64) { |
| self.Value = v |
| } |
| |
| func (self *OxsPacketCount) Serialize(encoder *goloxi.Encoder) error { |
| if err := self.Oxs.Serialize(encoder); err != nil { |
| return err |
| } |
| |
| encoder.PutUint64(uint64(self.Value)) |
| |
| return nil |
| } |
| |
| func DecodeOxsPacketCount(parent *Oxs, decoder *goloxi.Decoder) (*OxsPacketCount, error) { |
| _oxspacketcount := &OxsPacketCount{Oxs: parent} |
| if decoder.Length() < 8 { |
| return nil, fmt.Errorf("OxsPacketCount packet too short: %d < 8", decoder.Length()) |
| } |
| _oxspacketcount.Value = uint64(decoder.ReadUint64()) |
| return _oxspacketcount, nil |
| } |
| |
| func NewOxsPacketCount() *OxsPacketCount { |
| obj := &OxsPacketCount{ |
| Oxs: NewOxs(2147616264), |
| } |
| return obj |
| } |
| func (self *OxsPacketCount) GetOXSName() string { |
| return "packet_count" |
| } |
| |
| func (self *OxsPacketCount) GetOXSValue() interface{} { |
| return self.Value |
| } |
| |
| func (self *OxsPacketCount) MarshalJSON() ([]byte, error) { |
| var value interface{} = self.GetOXSValue() |
| switch t := value.(type) { |
| case net.HardwareAddr: |
| value = t.String() |
| case net.IP: |
| value = t.String() |
| default: |
| if s, ok := t.(fmt.Stringer); ok { |
| value = s.String() |
| } else { |
| value = t |
| } |
| } |
| |
| jsonValue, err := json.Marshal(value) |
| if err != nil { |
| return nil, err |
| } |
| return []byte(fmt.Sprintf("{\"Type\":\"%s\",\"Value\":%s}", self.GetOXSName(), string(jsonValue))), nil |
| } |