package model

// 消费消息请求对象
type GetQueueAttributesRequest struct {
	// 公共请求参数
	common *CommonRequest
}

// 获取请求方法名
func (this *GetQueueAttributesRequest) GetActionName() string {
	return "GetQueueAttributes"
}

// SetCommonRequestObject 设置公共请求对象
func (this *GetQueueAttributesRequest) SetCommonRequest(commonRequest *CommonRequest) {
	this.common = commonRequest
}

// AssembleParamMap 组装参数字典
// 返回值
// map[string]string:请求参数字典
func (this *GetQueueAttributesRequest) AssembleParamMap() map[string]string {
	paramMap := this.common.AssembleParamMap()

	return paramMap
}

func NewGetQueueAttributesRequest() *GetQueueAttributesRequest {
	return &GetQueueAttributesRequest{}
}

// 消费消息请求返回结果对象
type GetQueueAttributesResponse struct {
	*CommonResponse

	MaxMsgHeapNum       int      `json:"maxMsgHeapNum"`       // 最大堆积消息数。取值范围在公测期间为 1,000,000 - 10,000,000，正式上线后范围可达到 1000,000-1000,000,000。默认取值在公测期间为 10,000,000，正式上线后为 100,000,000。
	PollingWaitSeconds  int      `json:"pollingWaitSeconds"`  // 消息接收长轮询等待时间。取值范围0 - 30秒，默认值0。
	VisibilityTimeout   int      `json:"visibilityTimeout"`   // 消息可见性超时。取值范围1 - 43200秒（即12小时内），默认值30。
	MaxMsgSize          int      `json:"maxMsgSize"`          // 消息最大长度。取值范围1024 - 1048576 Byte（即1K - 1024K），默认值65536。
	MsgRetentionSeconds int      `json:"msgRetentionSeconds"` // 消息保留周期。取值范围60-1296000秒（1min-15天），默认值345600秒（4 天）。
	CreateTime          int      `json:"createTime"`          // 队列的创建时间。返回 Unix 时间戳，精确到秒。
	LastModifyTime      int      `json:"lastModifyTime"`      // 最后一次修改队列属性的时间。返回 Unix 时间戳，精确到秒。
	ActiveMsgNum        int      `json:"activeMsgNum"`        // 在队列中处于 Active 状态（不处于被消费状态）的消息总数，为近似值。
	InactiveMsgNum      int      `json:"inactiveMsgNum"`      // 在队列中处于 Inactive 状态（正处于被消费状态）的消息总数，为近似值。
	RewindSeconds       int      `json:"rewindSeconds"`       // 回溯队列的消息回溯时间最大值，取值范围0 - 43200秒，0表示不开启消息回溯。
	RewindmsgNum        int      `json:"rewindmsgNum"`        // 已调用 DelMsg 接口删除，但还在回溯保留时间内的消息数量。
	MinMsgTime          int      `json:"minMsgTime"`          // 消息最小未消费时间，单位为秒。
	QueueName           string   `json:"queueName"`           // 消息队列名字。
	QueueId             string   `json:"queueId"`             // 消息队列ID。
	CreateUin           int64    `json:"createUin"`           // 创建者Uin。
	Bps                 int      `json:"Bps"`                 // 带宽限制。
	Qps                 int      `json:"qps"`                 // 每秒钟生产消息条数的限制，消费消息的大小是该值的1.1倍。
	Tags                []string `json:"tags"`                // 关联的标签。
}

func NewGetQueueAttributesResponse() *GetQueueAttributesResponse {
	return &GetQueueAttributesResponse{}
}
