package com.cgcl.cloudesk.manage.util;
import com.cgcl.cloudesk.manage.config.PacketConfig;
import com.cgcl.cloudesk.manage.packet.AllAppInfoRspPacket;
import com.cgcl.cloudesk.manage.packet.CustomizeAppInfoRspPacket;
import com.cgcl.cloudesk.manage.packet.CustomizeAppRspPacket;
import com.cgcl.cloudesk.manage.packet.GetFileListRspPacket;
import com.cgcl.cloudesk.manage.packet.GetGradeRspPacket;
import com.cgcl.cloudesk.manage.packet.GetUserDirRspPacket;
import com.cgcl.cloudesk.manage.packet.MountPacket;
import com.cgcl.cloudesk.manage.packet.PacketBase;
import com.cgcl.cloudesk.manage.packet.RestoreSceneRspPacket;
import com.cgcl.cloudesk.manage.packet.SaveSceneRspPacket;
import com.cgcl.cloudesk.manage.packet.ScoringRspPacket;
import com.cgcl.cloudesk.manage.packet.UnCustomizeAppRspPacket;
import com.cgcl.cloudesk.manage.packet.UnmountPacket;
import com.cgcl.cloudesk.manage.packet.UserLoginRspPacket;
import com.cgcl.cloudesk.manage.packet.UserRegRspPacket;
import com.cgcl.cloudesk.manage.packet.WarningPacket;
import com.cgcl.cloudesk.manage.packet.WorksetInfoRspPacket;
public class NetUtil {
/**
* Produces a packet from buf
* @param buf byte array that contains the packet content
* @param offset start point of buf
* @param packet produced packet, null indicates no sufficient content
* @return length of new produced packet, if the content is not sufficient then return 0
*/
public static PacketBase produce(byte[] buf, int offset, int len)
{
if(PacketConfig.kPacketBaseLen > len)
{
System.out.println("haha1");
return null;
}
int packetLen = Serializer.deserializeInt(buf, offset + PacketConfig.kLenPos);
System.out.println("packetLen = " + packetLen);
if( len <= buf.length )
{
System.out.println("len <= NetConfig.inputBufLen : " + "len = " + len);
if( packetLen > buf.length)
{
System.out.println("packetLen > NetConfig.inputBufLen : " + "packetLen = " + packetLen);
WarningPacket packet = new WarningPacket(packetLen);
System.out.println("packet too long!");
return packet;
}
}
if(packetLen > len)
{
System.out.println("haha2");
return null;
}
PacketBase packet = null;
char type = Serializer.deserializeChar(buf, offset + PacketConfig.kTypePos);
switch(type)
{
// to be added
case PacketConfig.kUserRegRspPacketType:
{
System.out.println("receive kUserRegRspPacketType");
UserRegRspPacket userRegRspPacket = new UserRegRspPacket();
userRegRspPacket.deserialize(buf, offset);
packet = userRegRspPacket;
break;
}
case PacketConfig.kUserLoginRspPacketType:
{
System.out.println("receive kUserLoginRspPacketType");
UserLoginRspPacket userLoginRspPacket = new UserLoginRspPacket();
System.out.println("UserLoginRspPacket userLoginRspPacket = new UserLoginRspPacket();");
userLoginRspPacket.deserialize(buf, offset);
System.out.println("userLoginRspPacket.deserialize(buf, offset);");
packet = userLoginRspPacket;
System.out.println("packet = userLoginRspPacket;");
break;
}
case PacketConfig.kAllAppInfoRspPacketType:
{
System.out.println("receive kAllAppInfoRspPacketType");
AllAppInfoRspPacket allAppInfoRspPacket = new AllAppInfoRspPacket();
allAppInfoRspPacket.deserialize(buf, offset);
packet = allAppInfoRspPacket;
break;
}
case PacketConfig.kCustomizeAppInfoRspPacketType:
{
System.out.println("receive kCustomizeAppInfoRspPacketType");
CustomizeAppInfoRspPacket customizeAppInfoRspPacket = new CustomizeAppInfoRspPacket();
customizeAppInfoRspPacket.deserialize(buf, offset);
packet = customizeAppInfoRspPacket;
break;
}
case PacketConfig.kCustomizeAppRspPacketType:
{
System.out.println("receive kCustomizeAppRspPacketType");
CustomizeAppRspPacket customizeAppRspPacket = new CustomizeAppRspPacket();
customizeAppRspPacket.deserialize(buf, offset);
packet = customizeAppRspPacket;
break;
}
case PacketConfig.kSaveSceneRspPacketType:
{
System.out.println("receive kSaveSceneRspPacketType");
SaveSceneRspPacket saveSceneRspPacket = new SaveSceneRspPacket();
saveSceneRspPacket.deserialize(buf, offset);
packet = saveSceneRspPacket;
break;
}
case PacketConfig.kUnmountPacketType:
{
System.out.println("receive kUnmountPacketType*");
UnmountPacket unmountPacket = new UnmountPacket();
unmountPacket.deserialize(buf, offset);
packet = unmountPacket;
break;
}
case PacketConfig.kMountPacketType:
{
System.out.println("receive kMountPacketType");
MountPacket mountPacket = new MountPacket();
mountPacket.deserialize(buf, offset);
packet = mountPacket;
break;
}
case PacketConfig.kWorksetInfoRspPacketType:
{
System.out.println("receive kWorksetInfoRspPacketType");
WorksetInfoRspPacket worksetInfoRspPacket = new WorksetInfoRspPacket();
worksetInfoRspPacket.deserialize(buf, offset);
packet = worksetInfoRspPacket;
break;
}
case PacketConfig.kRestoreSceneRspPacketType:
{
System.out.println("receive kRestoreSceneRspPacket");
RestoreSceneRspPacket restoreSceneRspPacket = new RestoreSceneRspPacket();
restoreSceneRspPacket.deserialize(buf, offset);
packet = restoreSceneRspPacket;
break;
}
case PacketConfig.kUnCustomizeAppRspPacketType:
{
System.out.println("receive kUnCustomizeAppRspPacketType");
UnCustomizeAppRspPacket unCustomizeAppRspPacket = new UnCustomizeAppRspPacket();
unCustomizeAppRspPacket.deserialize(buf, offset);
packet = unCustomizeAppRspPacket;
break;
}
case PacketConfig.kGetUserDirRspPacketType:
{
System.out.println("receive kGetUserDirRspPacketType");
GetUserDirRspPacket getUserDirRspPacket = new GetUserDirRspPacket();
getUserDirRspPacket.deserialize(buf, offset);
packet = getUserDirRspPacket;
break;
}
case PacketConfig.kGetFileListPacketRspType:
{
System.out.println("receive kGetFileListRspPacketType");
GetFileListRspPacket getFileListRspPacket = new GetFileListRspPacket();
getFileListRspPacket.deserialize(buf, offset);
packet = getFileListRspPacket;
break;
}
// added by dhm 2011 7.17
case PacketConfig.kGetGradePacketRspType:
{
System.out.println("receive kGetGradePacketRspType");
GetGradeRspPacket getGradeRspPacket = new GetGradeRspPacket();
getGradeRspPacket.deserialize(buf, offset);
packet = getGradeRspPacket;
break;
}
case PacketConfig.kScoringPacketRspType:
{
System.out.println("receive kScoringRspPacketType");
ScoringRspPacket scoringRspPacket = new ScoringRspPacket ();
scoringRspPacket.deserialize(buf, offset);
packet = scoringRspPacket;
break;
}
default:
{
System.out.println("fatal error, unhandled packet!!!!!!!!!!!!!!!!!!!!!!!!!!");
break;
}
}
System.out.println("return packet");
return packet;
}
}