import { ProtocolRequest, ProtocolResponse, ProtocolEncoder, PacketBody, PacketBodyValue, ProtocolDecoder, ProtocolMessage } from '@ucap-webmessenger/protocol'; export interface RoomOpen3Request extends ProtocolRequest { // 0. 구분자 divCd: string; // 1. 대화방제목(s) roomName: string; // 2. 타이머대화방여부YN(s) isTimerRoom: boolean; // 3. 타이머시간(n) timerRoomInterval: number; // 4n. 초대자 userSeq(n)... userSeqs: number[]; } export interface RoomOpen3Response extends ProtocolResponse { // 0. 구분자 divCd: string; // 1. 대화방제목(s) roomName: string; // 2. 대화방SEQ(s) roomSeq: string; // 3. 신규여부(y) newRoom: boolean; // 4. 타이머대화방여부YN(s) isTimerRoom: boolean; // 5. 타이머시간(n) timerRoomInterval: number; } export const encodeRoomOpen3: ProtocolEncoder = ( req: RoomOpen3Request ) => { const bodyList: PacketBody[] = []; bodyList.push({ type: PacketBodyValue.String, value: req.divCd }); bodyList.push({ type: PacketBodyValue.String, value: req.roomName.trim() }); bodyList.push({ type: PacketBodyValue.String, value: req.isTimerRoom === true ? 'Y' : 'N' }); bodyList.push({ type: PacketBodyValue.Integer, value: req.isTimerRoom !== true ? 0 : req.timerRoomInterval }); for (const userSeq of req.userSeqs) { bodyList.push({ type: PacketBodyValue.Integer, value: userSeq }); } return bodyList; }; export const decodeRoomOpen3: ProtocolDecoder = ( message: ProtocolMessage ) => { return { divCd: message.bodyList[0], roomName: message.bodyList[1], roomSeq: message.bodyList[2], newRoom: message.bodyList[3] === 'Y' ? true : false, isTimerRoom: message.bodyList[4] === 'Y' ? true : false, timerRoomInterval: message.bodyList[5] || 0 } as RoomOpen3Response; };