package logic

import (
	"fusenapi/constants"
)

// 消息分发工厂
type allocationProcessorFactory interface {
	//分配数据到缓冲队列
	allocationMessage(w *wsConnectItem, data []byte)
}

var mapAllocationProcessor = make(map[constants.Websocket]allocationProcessorFactory)

func (w *wsConnectItem) newAllocationProcessor(msgType constants.Websocket) allocationProcessorFactory {
	if val, ok := mapAllocationProcessor[msgType]; ok {
		return val
	}
	var obj allocationProcessorFactory
	switch msgType {
	//图片渲染
	case constants.WEBSOCKET_RENDER_IMAGE:
		obj = &renderProcessor{}
	//刷新重连请求恢复上次连接的标识
	case constants.WEBSOCKET_REQUEST_REUSE_LAST_CONNECT:
		obj = &reuseConnProcessor{}
	default:

	}
	if obj != nil {
		mapAllocationProcessor[msgType] = obj
	}
	return obj
}