2019-09-23 17:00:05 +09:00

74 lines
1.9 KiB
TypeScript

import {
ProtocolRequest,
ProtocolResponse,
ProtocolEncoder,
PacketBody,
PacketBodyValue,
ProtocolDecoder,
ProtocolMessage
} from '@ucap-webmessenger/protocol';
export interface RoomOpen4Request 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 RoomOpen4Response 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 encodeRoomOpen4: ProtocolEncoder<RoomOpen4Request> = (
req: RoomOpen4Request
) => {
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 decodeRoomOpen4: ProtocolDecoder<RoomOpen4Response> = (
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[4] !== 'Y' ? 0 : message.bodyList[5] || 0
} as RoomOpen4Response;
};