int LiveChannelSample::GetLiveChannelHistory()

in sample/src/LiveChannel/LiveChannelSample.cc [124:179]


int LiveChannelSample::GetLiveChannelHistory()
{
    isSuccess_ = false;
    int i = 0;
    GetLiveChannelHistoryResult result;
    
    timeStart_ = time(NULL);
    timeEnd_ = timeStart_ + 3600;
    std::cout << "timeStart: " << timeStart_ << " End: " << timeEnd_ << std::endl;
    time_t expireTime = timeEnd_;
    GenerateRTMPSignedUrlRequest request(bucket_, channelName_, "test_play_list.m3u8", expireTime);
    auto generateOutcome = client->GenerateRTMPSignedUrl(request);
    if(!generateOutcome.isSuccess())
    {
        std::cout << "GenerateRTMPSignedUrl fail" <<std::endl;
        return -1;
    }else{
        signedRTMPUrl_ = generateOutcome.result();
        std::cout << "GenerateRTMPSignedUrl success URL: " << signedRTMPUrl_ << std::endl;
    }

    // use ffmpeg or some other tools to push rtmp stream asynchronizely to signed url
    // we will wait 15 minutes at most

    while(1)
    {
        if(i>MAX_LOOP_TIMES)
            break;

        auto getOutcome = client->GetLiveChannelHistory(GetLiveChannelHistoryRequest(bucket_, channelName_));
        if(getOutcome.isSuccess())
        {
            std::vector<LiveRecord> vec = getOutcome.result().LiveRecordList();
            if(vec.size() > 0)
            {
                isSuccess_ = true;
                result = getOutcome.result();
                std::cout << "LiveRecordList size " << vec.size() << std::endl;
                for(size_t j=0; j <vec.size(); j++)
                {
                    std::cout << "    LiveRecord: " << std::endl;
                    std::cout << "       startTime: " << vec[j].startTime << std::endl;
                    std::cout << "       endTime: " << vec[j].endTime << std::endl;
                    std::cout << "       remoteAddr: " << vec[j].remoteAddr << std::endl;
                }
                waitTimeinSec(30);
                break;
            }else{
                std::cout << "warning: LiveRecordList size is 0" << std::endl;
                waitTimeinSec(15);
            }
        }
        i++;
    }
    return 0;
}