123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package sarama
- // DescribeClientQuotas Request (Version: 0) => [components] strict
- // components => entity_type match_type match
- // entity_type => STRING
- // match_type => INT8
- // match => NULLABLE_STRING
- // strict => BOOLEAN
- // A filter to be applied to matching client quotas.
- // Components: the components to filter on
- // Strict: whether the filter only includes specified components
- type DescribeClientQuotasRequest struct {
- Version int16
- Components []QuotaFilterComponent
- Strict bool
- }
- // Describe a component for applying a client quota filter.
- // EntityType: the entity type the filter component applies to ("user", "client-id", "ip")
- // MatchType: the match type of the filter component (any, exact, default)
- // Match: the name that's matched exactly (used when MatchType is QuotaMatchExact)
- type QuotaFilterComponent struct {
- EntityType QuotaEntityType
- MatchType QuotaMatchType
- Match string
- }
- func (d *DescribeClientQuotasRequest) encode(pe packetEncoder) error {
- // Components
- if err := pe.putArrayLength(len(d.Components)); err != nil {
- return err
- }
- for _, c := range d.Components {
- if err := c.encode(pe); err != nil {
- return err
- }
- }
- // Strict
- pe.putBool(d.Strict)
- return nil
- }
- func (d *DescribeClientQuotasRequest) decode(pd packetDecoder, version int16) error {
- // Components
- componentCount, err := pd.getArrayLength()
- if err != nil {
- return err
- }
- if componentCount > 0 {
- d.Components = make([]QuotaFilterComponent, componentCount)
- for i := range d.Components {
- c := QuotaFilterComponent{}
- if err = c.decode(pd, version); err != nil {
- return err
- }
- d.Components[i] = c
- }
- } else {
- d.Components = []QuotaFilterComponent{}
- }
- // Strict
- strict, err := pd.getBool()
- if err != nil {
- return err
- }
- d.Strict = strict
- return nil
- }
- func (d *QuotaFilterComponent) encode(pe packetEncoder) error {
- // EntityType
- if err := pe.putString(string(d.EntityType)); err != nil {
- return err
- }
- // MatchType
- pe.putInt8(int8(d.MatchType))
- // Match
- if d.MatchType == QuotaMatchAny {
- if err := pe.putNullableString(nil); err != nil {
- return err
- }
- } else if d.MatchType == QuotaMatchDefault {
- if err := pe.putString(""); err != nil {
- return err
- }
- } else {
- if err := pe.putString(d.Match); err != nil {
- return err
- }
- }
- return nil
- }
- func (d *QuotaFilterComponent) decode(pd packetDecoder, version int16) error {
- // EntityType
- entityType, err := pd.getString()
- if err != nil {
- return err
- }
- d.EntityType = QuotaEntityType(entityType)
- // MatchType
- matchType, err := pd.getInt8()
- if err != nil {
- return err
- }
- d.MatchType = QuotaMatchType(matchType)
- // Match
- match, err := pd.getNullableString()
- if err != nil {
- return err
- }
- if match != nil {
- d.Match = *match
- }
- return nil
- }
- func (d *DescribeClientQuotasRequest) key() int16 {
- return 48
- }
- func (d *DescribeClientQuotasRequest) version() int16 {
- return d.Version
- }
- func (d *DescribeClientQuotasRequest) headerVersion() int16 {
- return 1
- }
- func (d *DescribeClientQuotasRequest) isValidVersion() bool {
- return d.Version == 0
- }
- func (d *DescribeClientQuotasRequest) requiredVersion() KafkaVersion {
- return V2_6_0_0
- }
|