public void doSceneToCGI(string msgid, CImgMsgContext imgContext, string toUsername)
        {
            base.beginBuilder();
            base.mBuilder.BaseRequest    = NetSceneBase.makeBaseRequest(0);
            base.mBuilder.FromUserName   = Util.toSKString(AccountMgr.curUserName);
            base.mBuilder.ToUserName     = Util.toSKString(toUsername);
            base.mBuilder.ClientImgId    = Util.toSKString(msgid);
            base.mBuilder.MsgType        = 3;
            base.mBuilder.TotalLen       = (uint)imgContext.length;
            base.mBuilder.StartPos       = 0;
            base.mBuilder.DataLen        = (uint)imgContext.length;
            base.mBuilder.Data           = Util.toSKBuffer(new byte[0]);
            base.mBuilder.EncryVer       = 1;
            base.mBuilder.AESKey         = imgContext.aesKey;
            base.mBuilder.CDNThumbAESKey = imgContext.aesKey;

            base.mBuilder.CompressType  = 0;
            base.mBuilder.CDNBigImgSize = 0;
            base.mBuilder.CDNBigImgUrl  = "";

            if (imgContext.hdlength != 0)
            {
                base.mBuilder.CDNMidImgSize = imgContext.hdlength;
            }
            else
            {
                base.mBuilder.CDNMidImgSize = imgContext.length;
            }

            base.mBuilder.CDNMidImgUrl    = imgContext.midUrlKey;
            base.mBuilder.CDNThumbImgSize = imgContext.thumblength;
            base.mBuilder.CDNThumbImgUrl  = imgContext.thumbUrlKey;

            base.mBuilder.CDNThumbImgWidth  = imgContext.CDNThumbImgWidth;
            base.mBuilder.CDNThumbImgHeight = imgContext.CDNThumbImgHeight;
            base.mSessionPack.mCmdID        = 9;
            base.mSessionPack.mNeedCompress = false;
            base.endBuilder();
        }
        public static int doScene(int imgMsgSvrId, ChatMsg item, string toTalker, int compressType = 0)
        {
            // ChatMsg item = StorageMgr.chatMsg.getBySvrID(toTalker, imgMsgSvrId);
            if (item == null)
            {
                Log.e("DownloadImgService", "Not found chat msg by srvidimg " + imgMsgSvrId);
                return(-1);
            }
            if (string.IsNullOrEmpty(item.strClientMsgId))
            {
                item.strClientMsgId = MD5Core.GetHashString(toTalker + imgMsgSvrId + Util.getNowMilliseconds());
                //StorageMgr.chatMsg.modifyMsg(item);
            }
            //MsgTrans trans = StorageMgr.msgImg.getByMsgSvrID(imgMsgSvrId);
            //bool flag = false;
            //if (trans == null)
            //{
            //    trans = new MsgTrans();
            //    flag = true;
            //}
            MsgTrans trans = new MsgTrans();

            trans.nMsgSvrID       = imgMsgSvrId;
            trans.nMsgLocalID     = item.nMsgLocalID;
            trans.strThumbnail    = item.strThumbnail;
            trans.strFromUserName = toTalker;
            trans.strToUserName   = AccountMgr.getCurAccount().strUsrName;
            trans.nTransType      = 2;
            DownloadImgContext context = DownloadImgContextMgr.getInstance().getContextBySvrid(imgMsgSvrId);

            if (context != null)
            {
                if ((context.mCompressType != 0) || (compressType != 1))
                {
                    Log.e("DownloadImgService", "imgMsgSvrId: " + imgMsgSvrId + "has been in Queue");
                    return(-1);
                }
                DownloadImgContextMgr.getInstance().remove(context);
            }
            DownloadImgContext context2 = new DownloadImgContext {
                mImgInfo      = trans,
                mCompressType = compressType,
                mChatMsg      = item,
                beginTime     = (long)Util.getNowMilliseconds()
            };
            CImgMsgContext context3 = parseImageContent(item.strTalker, item.strMsg);

            if (context3 == null)
            {
                Log.e("DownloadImgService", "Parse image msg xml failed: " + item.strContent);
                return(-1);
            }
            context2.mImgMsgContent = context3;
            if (compressType == 1)
            {
                context2.mImgInfo.nTotalDataLen = context3.hdlength;
            }
            else
            {
                context2.mImgInfo.nTotalDataLen = context3.length;
            }
            //if (!context2.intLocalDataFile(trans))
            //{
            //    Log.e("DownloadImgService", "intLocalDataFile failed! ");
            //    return -1;
            //}
            context2.mStatus = 0;
            DownloadImgContextMgr.getInstance().putToHead(context2);
            checkReadyContextDispatcher();
            context2.updateChatMsg();
            //  if (flag)
            // {
            // StorageMgr.msgTrans.add(context2.mImgInfo);
            // }
            return(1);
        }
        public static CImgMsgContext parseImageContent(string strTalker, string xmlContent)
        {
            if (string.IsNullOrEmpty(strTalker))
            {
                return(null);
            }
            CImgMsgContext context = new CImgMsgContext();

            if (string.IsNullOrEmpty(xmlContent))
            {
                context.length   = 0;
                context.hdlength = 0;
                return(context);
            }
            string text = xmlContent;

            if (ContactHelper.isChatRoom(strTalker))
            {
                int index = xmlContent.IndexOf('\n');
                text = xmlContent.Substring(index + 1);
            }
            XElement element = null;

            try
            {
                element = XDocument.Parse(text).Element("msg");
                string name = "img";
                if (element.Element(name) == null)
                {
                    name = "imgmsg";
                }
                XAttribute attribute = element.Element(name).Attribute("length");
                if (attribute != null)
                {
                    context.length = int.Parse(attribute.Value);
                }
                attribute = element.Element(name).Attribute("hdlength");
                if (attribute != null)
                {
                    context.hdlength = int.Parse(attribute.Value);
                }
                attribute = element.Element(name).Attribute("cdnthumblength");
                if (attribute != null)
                {
                    context.thumblength = int.Parse(attribute.Value);
                }
                attribute = element.Element(name).Attribute("encryver");
                if (attribute != null)
                {
                    context.encryVer = int.Parse(attribute.Value);
                }
                attribute = element.Element(name).Attribute("aeskey");
                if (attribute != null)
                {
                    context.aesKey      = attribute.Value;
                    context.thumbaesKey = attribute.Value;
                }
                attribute = element.Element(name).Attribute("cdnthumbaeskey");
                if (attribute != null)
                {
                    context.thumbaesKey = attribute.Value;
                }
                attribute = element.Element(name).Attribute("cdnmidimgurl");
                if (attribute != null)
                {
                    context.midUrlKey = attribute.Value;
                }
                attribute = element.Element(name).Attribute("cdnbigimgurl");
                if (attribute != null)
                {
                    context.bigUrlKey = attribute.Value;
                }
                attribute = element.Element(name).Attribute("cdnthumburl");
                if (attribute != null)
                {
                    context.thumbUrlKey = attribute.Value;
                }

                attribute = element.Element(name).Attribute("cdnthumbheight");
                if (attribute != null)
                {
                    context.CDNThumbImgHeight = int.Parse(attribute.Value);
                }

                attribute = element.Element(name).Attribute("cdnthumbwidth");
                if (attribute != null)
                {
                    context.CDNThumbImgWidth = int.Parse(attribute.Value);
                }
            }
            catch (Exception exception)
            {
                Log.e("DownloadImgService", exception.Message);
                context.length   = 0;
                context.hdlength = 0;
                return(context);
            }
            return(context);
        }