亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gnhdrec.cpp

?? SYMIBNA 支持大型文件斷點續傳的引擎源代碼
?? CPP
字號:
/*
 ============================================================================
 Name        : GnHDRec.cpp
 Author      : cheney.kan
 Version     : 0.9
 Copyright   : Your copyright notice
 Description : CGnHDRec implementation
 ============================================================================
 */

#include <S32STRM.H>
#include <BAUTILS.H>
#include <S32FILE.H>
#include <BADESCA.H>


#include "GnHDRec.h"

_LIT(KGnHDRecSuffix, ".gnhdrs");




void CGnHDRecFmt::ExternalizeL(RWriteStream& aStream)const
{
    aStream<<iUri;
    aStream<<iPoint;
}
void CGnHDRecFmt::InternalizeL(RReadStream& aStream)
{
    aStream>>iUri;
    aStream>>iPoint;
}





CGnHDRec* CGnHDRec::NewLC()
    {
    CGnHDRec* self = new (ELeave) CGnHDRec();
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

CGnHDRec* CGnHDRec::NewL()
    {
    CGnHDRec* self = CGnHDRec::NewLC();
    CleanupStack::Pop(); // self;
    return self;
    }

void CGnHDRec::OpenOrCreateRecFileL(const TDesC & aRecFileName)
    {
    iRecFileName = aRecFileName;
    iRecFileName2 = aRecFileName;
    iRecFileName2.Append(KGnHDRecSuffix);
    
    if(!BaflUtils::FileExists(iRFs, iRecFileName)
	    || !BaflUtils::FileExists(iRFs, iRecFileName2))
    	{
        BaflUtils::EnsurePathExistsL(iRFs, iRecFileName);

        ReplaceAllRecFilesL();
    	}
    /*
    iRecFile.Close();
    if(KErrNone == iRecFile.Open(iRFs, iRecFileName2, EFileRead | EFileWrite))
        {
        iRecFile.Close();
        if(KErrNone == iRecFile.Open(iRFs, iRecFileName, EFileRead | EFileWrite))
            {
            iRecFile.Close();
            return;
            }
        }
    //*/

    /*
    iRecFile.Close();
    User::LeaveIfError(
        iRecFile.Replace(iRFs, iRecFileName2, EFileRead | EFileWrite));
    iRecFile.Close();
    User::LeaveIfError(
        iRecFile.Replace(iRFs, iRecFileName, EFileRead | EFileWrite));
    //*/
    }

void CGnHDRec::OpenRecFileL(const TDesC & aRecFileName)
{
    iRecFileName = aRecFileName;
    iRecFileName2 = aRecFileName;
    iRecFileName2.Append(KGnHDRecSuffix);

    /*
    iRecFile.Close();
    User::LeaveIfError(iRecFile.Open(iRFs, iRecFileName2, EFileRead | EFileWrite));
    iRecFile.Close();
    User::LeaveIfError(iRecFile.Open(iRFs, iRecFileName, EFileRead | EFileWrite));
    iRecFile.Close();
    //*/
    if(!BaflUtils::FileExists(iRFs, iRecFileName)
	    || !BaflUtils::FileExists(iRFs, iRecFileName2))
    	{
    	User::Leave(KErrNotFound);
    	}
}

const TDesC & CGnHDRec::GetRecFileName() const
{
    return iRecFileName;
}


TInt32 CGnHDRec::GetPositionPreTimeL(const TDesC8 & aUri)
{
    TInt32 position = -1;

    RFileReadStream rStream;
    User::LeaveIfError(rStream.Open(iRFs, iRecFileName, EFileRead));
    CleanupClosePushL(rStream);

    iIndex = FindIndexL(rStream, aUri);
    
    CleanupStack::PopAndDestroy(); // rStream
    
    if(iIndex >= 0) // catched
        {
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName2, EFileRead));
        CleanupClosePushL(rStream);

        TRAPD(err, position = InternalizeNextTInt32L(rStream, iIndex); );
        CleanupStack::PopAndDestroy(); // rStream
        if(err != KErrNone)
            {
            position = -1;
            ResetL();
            }
        }
        
    return position;
}


void CGnHDRec::UpdateRecPosL(CGnHDRecFmt & aGnHDRecFmt)
{
    RFileReadStream rStream;
    
    User::LeaveIfError(rStream.Open(iRFs, iRecFileName2, EFileRead));
    CleanupClosePushL(rStream);
    RArray<TInt32> posList = InternalizeAllTInt32L(rStream);
    CleanupStack::PopAndDestroy(); // rStream
    
    RFileWriteStream wStream;
    //User::LeaveIfError(
    //    wStream.Open(iRFs, iRecFileName, EFileRead|EFileWrite));
    //CleanupClosePushL(wStream);
    
    if(iIndex >= 0) // catched
        {
        posList[iIndex] = aGnHDRecFmt.iPoint;
        }
    else // not be catched
        {
        posList.InsertL(aGnHDRecFmt.iPoint, 0);
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName, EFileRead));
        CleanupClosePushL(rStream);
        CDesC8Array * desList = InternalizeAllDesL(rStream);
        CleanupStack::PopAndDestroy(); // rStream

        desList->InsertL(0, aGnHDRecFmt.iUri);
        
        User::LeaveIfError(
            wStream.Open(iRFs, iRecFileName, EFileRead|EFileWrite));
        CleanupClosePushL(wStream);
        ExternalizeAllDesL(wStream, *desList);
        CleanupStack::PopAndDestroy(); // wStream
        iIndex = 0;
        }
    User::LeaveIfError(
        wStream.Open(iRFs, iRecFileName2, EFileRead|EFileWrite));
    CleanupClosePushL(wStream);
    ExternalizeAllTInt32L(wStream, posList);
    CleanupStack::PopAndDestroy(); // wStream
}

void CGnHDRec::DeleteRecAndCloseL()
{
    if(iIndex >= 0)
    {
        RFileReadStream rStream;
        RFileWriteStream wStream;

        // for position
        // read
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName2, EFileRead));
        CleanupClosePushL(rStream);
        RArray<TInt32> posList = InternalizeAllTInt32L(rStream);
        CleanupStack::PopAndDestroy(); // rStream
        posList.Remove(iIndex);
        // write
        User::LeaveIfError(
            wStream.Open(iRFs, iRecFileName2, EFileRead));
        CleanupClosePushL(wStream);
        ExternalizeAllTInt32L(wStream, posList);
        CleanupStack::PopAndDestroy(); // wStream

        // for uri
        // read
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName, EFileRead));
        CleanupClosePushL(rStream);
        CDesC8Array * desList = InternalizeAllDesL(rStream);
        CleanupStack::PopAndDestroy(); // rStream
        desList->Delete(iIndex);
        // write
        User::LeaveIfError(
            wStream.Open(iRFs, iRecFileName, EFileRead|EFileWrite));
        CleanupClosePushL(wStream);
        ExternalizeAllTInt32L(wStream, posList);
        CleanupStack::PopAndDestroy(); // wStream
            
        iIndex = -1;
    }
}

void CGnHDRec::RemoveUriInfoFromRecL(const TDesC8 & aUri)
{
    RFileReadStream rStream;
    User::LeaveIfError(rStream.Open(iRFs, iRecFileName, EFileRead));
    CleanupClosePushL(rStream);

    TInt index = FindIndexL(rStream, aUri);
    
    CleanupStack::PopAndDestroy(); // rStream

    if(index > 0)
        {
        RFileReadStream rStream;
        RFileWriteStream wStream;

        // for position
        // read
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName2, EFileRead));
        CleanupClosePushL(rStream);
        RArray<TInt32> posList = InternalizeAllTInt32L(rStream);
        CleanupStack::PopAndDestroy(); // rStream
        posList.Remove(index);
        // write
        User::LeaveIfError(
            wStream.Open(iRFs, iRecFileName2, EFileRead));
        CleanupClosePushL(wStream);
        ExternalizeAllTInt32L(wStream, posList);
        CleanupStack::PopAndDestroy(); // wStream

        // for uri
        // read
        User::LeaveIfError(rStream.Open(iRFs, iRecFileName, EFileRead));
        CleanupClosePushL(rStream);
        CDesC8Array * desList = InternalizeAllDesL(rStream);
        CleanupStack::PopAndDestroy(); // rStream
        desList->Delete(index);
        // write
        User::LeaveIfError(
            wStream.Open(iRFs, iRecFileName, EFileRead|EFileWrite));
        CleanupClosePushL(wStream);
        ExternalizeAllTInt32L(wStream, posList);
        CleanupStack::PopAndDestroy(); // wStream
        }
}

CGnHDRec::~CGnHDRec()
    {
    iRecFile.Close();
    iRFs.Close();
    }

void CGnHDRec::ResetL()
{
    iIndex = -1;
    ReplaceAllRecFilesL();
}

void CGnHDRec::ReplaceAllRecFilesL()
{
    iRecFile.Close();
    User::LeaveIfError(
        iRecFile.Replace(iRFs, iRecFileName2, EFileRead | EFileWrite));
    iRecFile.Close();
    User::LeaveIfError(
        iRecFile.Replace(iRFs, iRecFileName, EFileRead | EFileWrite));
    iRecFile.Close();
}

TInt CGnHDRec::FindIndexL(RReadStream & aStream, const TDesC8 & aUri)
{
    //HBufC8 * tempHBuf = HBufC8::NewLC(255);
    TBuf8<255>  * tempHBuf = new (ELeave) TBuf8<255>();
    CleanupDeletePushL(tempHBuf);
    
    TInt index = 0;
    
    TInt err = KErrNone;
  TRAP(err, 
    while(KErrNone == err)
        {
        //aStream>>(tempHBuf->Des());
        aStream>>(*tempHBuf);
        if( (*tempHBuf) == aUri )
            {
            break;
            }
        index++;
        //RDebug::Print(temp);
        //RDebug::Printf("des=\"%s\",err=%d", temp.Ptr(), err);
        };
  );
    CleanupStack::PopAndDestroy(tempHBuf); tempHBuf = NULL;
    
    if(err != KErrNone)
        {
        index = -1;
        
        if(err != KErrEof)
            User::Leave(err);
        }
    return index;
}

TInt32 CGnHDRec::InternalizeNextTInt32L(RReadStream & aStream, TInt aIndex)
{
    TInt32 value = -1;
  //TRAPD(err, 
    for(TInt i = 0; i <= aIndex; i++)
        {
        aStream>>value;
        }
  //);
    //User::LeaveIfError(err);
    
    return value;
}

RArray<TInt32> CGnHDRec::InternalizeAllTInt32L(RReadStream & aStream)
{
    RArray<TInt32> list;
    TInt32 value = -1;
  TRAPD(err,
    while(ETrue)
    {
        aStream>>value;
        list.AppendL(value);
    };
  );
    if(err != KErrEof)
        User::Leave(err);

    return list;
}

CDesC8Array * CGnHDRec::InternalizeAllDesL(RReadStream & aStream)
{
    CDesC8Array * list = new (ELeave) CDesC8ArraySeg(20);
    CleanupStack::PushL(list);

    //HBufC8 * tempBuf = HBufC8::NewLC(255);
    TBuf8<255>  * tempBuf = new (ELeave) TBuf8<255>();
    CleanupDeletePushL(tempBuf);
    
  TRAPD(err, 
    while(ETrue)
        {
        aStream>>(*tempBuf);
        list->AppendL(*tempBuf);
        };
  );
    CleanupStack::PopAndDestroy(tempBuf); tempBuf = NULL;
    
    if(err != KErrEof)
        User::Leave(err);
    
    CleanupStack::Pop(list);
    return list;
}

void CGnHDRec::ExternalizeAllTInt32L(RWriteStream & aStream, RArray<TInt32> & aList)
{
    TInt count = aList.Count();
    for(TInt i = 0; i < count; i++)
    {
        aStream<<aList[i];
    }
    aStream.CommitL();
}

void CGnHDRec::ExternalizeAllDesL(RWriteStream & aStream, CDesC8Array & aList)
{
    TInt count = aList.MdcaCount();
    //TInt count = aList.Count(); is ok too
    //RDebug::Printf("MdcaCount=%d, Count=%d", count, count1);
    RDebug::Printf("MdcaCount=%d", count);
    
    for(TInt i = 0; i < count; i++)
    {
        aStream<<aList[i];
    }
    aStream.CommitL();
}

CGnHDRec::CGnHDRec()
    {
    // No implementation required
    }


void CGnHDRec::ConstructL()
    {
    iRFs.Connect();
    iIndex = -1;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产小视频在线观看| 高清成人在线观看| 欧美日韩成人综合天天影院| 亚洲一区二区av电影| 欧美猛男gaygay网站| 午夜精品免费在线观看| 91精品国产91久久综合桃花 | 日本不卡一二三| 制服.丝袜.亚洲.中文.综合| 久久er精品视频| 欧美高清在线精品一区| 91在线免费播放| 亚洲成人av一区| 久久久91精品国产一区二区精品 | 26uuu亚洲综合色| 粉嫩av一区二区三区| 亚洲九九爱视频| 欧美精品日韩一区| 国产精品一二三四| 亚洲三级电影网站| 欧美久久一二区| 国产永久精品大片wwwapp| 国产精品美女久久久久久久| 色哟哟国产精品| 蜜臀久久99精品久久久久宅男 | 日韩欧美国产综合| 成人激情动漫在线观看| 亚洲一区二区影院| 欧美电影免费观看高清完整版 | 国产在线视频不卡二| 国产精品人成在线观看免费 | 成人av在线播放网址| 亚洲第一福利视频在线| 久久久亚洲高清| 欧美三级韩国三级日本三斤| 国产资源在线一区| 依依成人综合视频| 久久精品人人做| 制服丝袜在线91| 91网站在线播放| 狠狠色丁香九九婷婷综合五月| 亚洲欧洲99久久| 精品少妇一区二区三区免费观看| 92国产精品观看| 国产精品主播直播| 秋霞电影网一区二区| 一区二区三区在线影院| 国产日本欧美一区二区| 欧美一级高清片在线观看| 日本久久电影网| 国产91综合网| 精品无码三级在线观看视频| 亚洲国产综合91精品麻豆| 国产精品传媒入口麻豆| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 日韩亚洲欧美成人一区| 97国产一区二区| 99免费精品在线| 福利一区二区在线观看| 国产一区二区精品久久99| 日本va欧美va瓶| 日韩精品电影一区亚洲| 亚洲制服丝袜一区| 亚洲午夜视频在线观看| 亚洲影院免费观看| 亚洲美女免费在线| 亚洲人被黑人高潮完整版| 欧美激情一区二区三区蜜桃视频| xfplay精品久久| 久久久久久9999| 欧美精品一区二区三区蜜臀| 欧美一级精品大片| 91麻豆精品91久久久久同性| 欧美精品一卡二卡| 欧美一区二区三区成人| 91精品国产丝袜白色高跟鞋| 欧美日韩一区二区在线观看视频| 91在线观看成人| 大白屁股一区二区视频| 韩国一区二区视频| 午夜精品福利一区二区蜜股av| 亚洲欧美韩国综合色| 欧美国产激情一区二区三区蜜月| 欧美大度的电影原声| 56国语精品自产拍在线观看| 欧美在线观看18| 91久久精品网| 91麻豆精品国产| 欧美人妇做爰xxxⅹ性高电影| 色天使久久综合网天天| www.久久精品| 91一区二区三区在线观看| av在线不卡免费看| 99精品国产热久久91蜜凸| 一本大道久久精品懂色aⅴ| 白白色 亚洲乱淫| 成人avav在线| 91色porny在线视频| 色拍拍在线精品视频8848| 色综合咪咪久久| 91久久久免费一区二区| 欧美一区二区成人| 欧美大片拔萝卜| 国产亚洲一本大道中文在线| 日本一区二区免费在线观看视频| 欧美国产乱子伦| 中文字幕欧美一区| 久久精品亚洲乱码伦伦中文| 亚洲欧美视频在线观看| 无码av免费一区二区三区试看| 五月综合激情婷婷六月色窝| 麻豆国产欧美日韩综合精品二区| 九九在线精品视频| 国产成a人亚洲精品| 国产乱人伦偷精品视频不卡| 在线视频欧美精品| 欧美精品少妇一区二区三区| 日韩欧美一区在线| 欧美激情中文字幕一区二区| 亚洲欧美日韩国产另类专区| 亚洲国产精品人人做人人爽| 亚洲精品高清视频在线观看| 久久99国产精品久久99果冻传媒| 粉嫩久久99精品久久久久久夜| 91亚洲国产成人精品一区二三| 欧美人狂配大交3d怪物一区| 久久久综合精品| 亚洲人成7777| 天涯成人国产亚洲精品一区av| 高清beeg欧美| 欧美无乱码久久久免费午夜一区 | 亚洲欧美在线aaa| 亚洲123区在线观看| 免费观看久久久4p| 在线看不卡av| 精品成人免费观看| 亚洲精品免费视频| 麻豆高清免费国产一区| av成人免费在线| 色婷婷综合久久久久中文| 久久久久久久久99精品| 亚洲一区二区欧美| 国产99久久久精品| 91精品免费在线| 中文字幕在线不卡| 久久av老司机精品网站导航| 欧美三级电影网站| 国产精品国产三级国产普通话蜜臀 | 久久国产精品区| 在线国产电影不卡| 欧美经典一区二区三区| 日韩中文字幕区一区有砖一区| 国产一区二区三区香蕉| 欧美性大战久久| 欧美国产日韩在线观看| 免费成人深夜小野草| 色综合久久久网| 国产无人区一区二区三区| 狠狠色综合播放一区二区| 欧美日韩国产一级片| 亚洲婷婷在线视频| 国产美女久久久久| 欧美一区二区成人6969| 亚洲一区二区三区四区在线免费观看 | 日韩写真欧美这视频| 一区二区免费在线| 99视频一区二区| 国产人成一区二区三区影院| 久久国产精品99精品国产| 色综合网站在线| 亚洲精品久久久久久国产精华液| 国产精品一区专区| 久久女同性恋中文字幕| 久久综合综合久久综合| 欧美一区二区三区在线| 亚洲综合区在线| 欧美一级一区二区| 日本免费新一区视频| 91 com成人网| 日韩和欧美一区二区| 欧美喷水一区二区| 日韩精品成人一区二区三区| 制服.丝袜.亚洲.另类.中文| 日韩av电影一区| 日韩女优av电影| 看片的网站亚洲| 日韩欧美一区二区不卡| 国产成人综合在线| 亚洲国产精华液网站w| 国产成人福利片| 中文字幕一区免费在线观看| 成人av免费网站| 日日夜夜免费精品视频| 日韩一区二区三区免费观看| 狂野欧美性猛交blacked| 精品国产凹凸成av人网站| 国产精品一区二区你懂的| 国产亚洲福利社区一区| 成人高清在线视频| 亚洲一区免费视频|