发新帖本帖赏金 10.00元(功能说明)我要提问
12
返回列表
打印

一步一步完善我的设计(5):各个模块编码码

[复制链接]
楼主: keer_zu
手机看帖
扫描二维码
随时随地手机跟帖
21
keer_zu|  楼主 | 2016-6-8 11:55 | 只看该作者 回帖奖励 |倒序浏览
TsQueue.cpp


#include "TsQueue.h"

TsQueue GVideoTsQueue;
TsQueue GDocOpenofficeTsQueue;
TsQueue GDocWpsTsQueue;
TsQueue GDocOfficeTsQueue;
TsQueue GDpptTsQueue;

bool TsQueue::PushTs(TransServer * ts)
{
        m_tsList.push_back(ts);

        return true;
}

TransServer* TsQueue::GetTsInSpecId(string tsId)
{
        list<TransServer*>::iterator it;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it)->GetId() == tsId){
                        return (TransServer *)(*it);
                }
        }

        return NULL;
}

bool TsQueue::CheckSameTs(string tsId)
{
        list<TransServer*>::iterator it;
        bool ret = false;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it)->GetId() == tsId){
                        ret = true;
                }
        }

        return ret;
}

bool TsQueue::DelTs(string tsId)
{
        list<TransServer*>::iterator it;
        bool ret = false;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it)->GetId() == tsId){
                        m_tsList.erase(it);
                        ret = true;
                }
        }

        return ret;
}

bool TsQueue::DelTs(TransServer *ts)
{
        list<TransServer*>::iterator it;
        bool ret = false;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it) == ts){
                        m_tsList.erase(it);
                        ret = true;
                }
        }

        return ret;
}

TransServer* TsQueue::GetTsIdle()
{
        list<TransServer*>::iterator it;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it)->GetState() == TsIdle){
                        return (TransServer *)(*it);
                }
        }

        return NULL;
}

TransServer* TsQueue::GetTransServer(TsSession* session)
{
        list<TransServer*>::iterator it;

        for(it = m_tsList.begin();it != m_tsList.end();it ++){
                if((*it)->GetSession() == session)
                        return *it;
        }

        return NULL;
}


使用特权

评论回复
22
keer_zu|  楼主 | 2016-6-8 11:55 | 只看该作者
TsUpdate.h

#ifndef __TS_UPDATE_H__
#define __TS_UPDATE_H__

#include "stdio.h"
#include "TsInterface.h"
#include "TaskQueue.h"

class TsUpdate : public ITsUpdateInfo
{
        TsUpdate* next;
protected:
        string m_taskType;
        TaskRunQueue* m_taskRunQueue;
public:
        bool isThis(string taskType)
        {
                if(m_taskType == taskType)
                        return true;
                else
                        return false;
        }
        void setNext(TsUpdate *n)
        {
                next = n;
        }
        void add(TsUpdate *n)
        {
                if (next)
                        next->add(n);
                else
                        next = n;
        }
       
        virtual void OnUpdateInfo(Json::Value& value,TsSession *session)
        {
                if(next != NULL)
                        next->OnUpdateInfo(value,session);
                else {  
                        printf("error");
                        // TODO: log
                }
        }
};

class TsVideoTransProgress : public TsUpdate
{
        TsVideoTransProgress();
public:
        static TsVideoTransProgress& GetInstance();
        virtual void OnUpdateInfo(Json::Value& value,TsSession *session);
};




#endif

使用特权

评论回复
23
keer_zu|  楼主 | 2016-6-8 11:56 | 只看该作者
TsUpdate.cpp


#include "TsUpdate.h"

////////////////////////////////////////

extern TaskRunQueue GVideoTaskRunQueue;

///////////////// TsVideoTransProgress //////////////////
TsVideoTransProgress::TsVideoTransProgress()
{
        m_taskType = "Transfer";
        m_taskRunQueue = &GVideoTaskRunQueue;
}

TsVideoTransProgress& TsVideoTransProgress::GetInstance()
{
        static TsVideoTransProgress instance_;
        return instance_;

}
void TsVideoTransProgress::OnUpdateInfo(Json::Value& value,TsSession *session)
{
        Task* task;

       
        if(value["TaskType"].isNull() || value["id"].isNull() || value["progress"].isNull()){

                // TODO:  log
                return;
        }
               
        if(isThis(value["TaskType"].asString())){
                task = m_taskRunQueue->GetTaskInSpecId(value["id"].asString());
                if(!task){
                        // TODO: log
                        return;
                }

                if(!value["progress"].isInt()){
                        // TODO: log
                        return;
                }

                task->SetProgress(value["progress"].asInt());
               
        } else {
                TsUpdate::OnUpdateInfo(value,session);
        }
}

使用特权

评论回复
24
keer_zu|  楼主 | 2016-6-8 15:56 | 只看该作者
yyy71cj 发表于 2016-6-8 15:30
若是能把这类图的继承、使用关系什么的先画出来就好了

有的,之前发了一部分了。后面有所调整。整理好了一起发出。

使用特权

评论回复
25
keer_zu|  楼主 | 2016-6-10 18:49 | 只看该作者
yyy71cj 发表于 2016-6-9 15:27
我倒没印象,很多人喜欢看代码,可是我比较怕……

其实我也怕代码,我更喜欢图。然而......

使用特权

评论回复
26
keer_zu|  楼主 | 2016-6-12 08:44 | 只看该作者
yyy71cj 发表于 2016-6-11 08:16
然而……代码……图……
没图,是吗?
设计工作的第一步,是啥? ...

第一步当然是第一次迭代过程的第一步:设计啦。

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则