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

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

[复制链接]
 楼主| keer_zu 发表于 2016-6-8 11:55 | 显示全部楼层
TsQueue.cpp


  1. #include "TsQueue.h"

  2. TsQueue GVideoTsQueue;
  3. TsQueue GDocOpenofficeTsQueue;
  4. TsQueue GDocWpsTsQueue;
  5. TsQueue GDocOfficeTsQueue;
  6. TsQueue GDpptTsQueue;

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

  10.         return true;
  11. }

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

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

  20.         return NULL;
  21. }

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

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

  31.         return ret;
  32. }

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

  37.         for(it = m_tsList.begin();it != m_tsList.end();it ++){
  38.                 if((*it)->GetId() == tsId){
  39.                         m_tsList.erase(it);
  40.                         ret = true;
  41.                 }
  42.         }

  43.         return ret;
  44. }

  45. bool TsQueue::DelTs(TransServer *ts)
  46. {
  47.         list<TransServer*>::iterator it;
  48.         bool ret = false;

  49.         for(it = m_tsList.begin();it != m_tsList.end();it ++){
  50.                 if((*it) == ts){
  51.                         m_tsList.erase(it);
  52.                         ret = true;
  53.                 }
  54.         }

  55.         return ret;
  56. }

  57. TransServer* TsQueue::GetTsIdle()
  58. {
  59.         list<TransServer*>::iterator it;

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

  65.         return NULL;
  66. }

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

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

  74.         return NULL;
  75. }


 楼主| keer_zu 发表于 2016-6-8 11:55 | 显示全部楼层
TsUpdate.h

  1. #ifndef __TS_UPDATE_H__
  2. #define __TS_UPDATE_H__

  3. #include "stdio.h"
  4. #include "TsInterface.h"
  5. #include "TaskQueue.h"

  6. class TsUpdate : public ITsUpdateInfo
  7. {
  8.         TsUpdate* next;
  9. protected:
  10.         string m_taskType;
  11.         TaskRunQueue* m_taskRunQueue;
  12. public:
  13.         bool isThis(string taskType)
  14.         {
  15.                 if(m_taskType == taskType)
  16.                         return true;
  17.                 else
  18.                         return false;
  19.         }
  20.         void setNext(TsUpdate *n)
  21.         {
  22.                 next = n;
  23.         }
  24.         void add(TsUpdate *n)
  25.         {
  26.                 if (next)
  27.                         next->add(n);
  28.                 else
  29.                         next = n;
  30.         }
  31.        
  32.         virtual void OnUpdateInfo(Json::Value& value,TsSession *session)
  33.         {
  34.                 if(next != NULL)
  35.                         next->OnUpdateInfo(value,session);
  36.                 else {  
  37.                         printf("error");
  38.                         // TODO: log
  39.                 }
  40.         }
  41. };

  42. class TsVideoTransProgress : public TsUpdate
  43. {
  44.         TsVideoTransProgress();
  45. public:
  46.         static TsVideoTransProgress& GetInstance();
  47.         virtual void OnUpdateInfo(Json::Value& value,TsSession *session);
  48. };




  49. #endif
 楼主| keer_zu 发表于 2016-6-8 11:56 | 显示全部楼层
TsUpdate.cpp


  1. #include "TsUpdate.h"

  2. ////////////////////////////////////////

  3. extern TaskRunQueue GVideoTaskRunQueue;

  4. ///////////////// TsVideoTransProgress //////////////////
  5. TsVideoTransProgress::TsVideoTransProgress()
  6. {
  7.         m_taskType = "Transfer";
  8.         m_taskRunQueue = &GVideoTaskRunQueue;
  9. }

  10. TsVideoTransProgress& TsVideoTransProgress::GetInstance()
  11. {
  12.         static TsVideoTransProgress instance_;
  13.         return instance_;

  14. }
  15. void TsVideoTransProgress::OnUpdateInfo(Json::Value& value,TsSession *session)
  16. {
  17.         Task* task;

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

  20.                 // TODO:  log
  21.                 return;
  22.         }
  23.                
  24.         if(isThis(value["TaskType"].asString())){
  25.                 task = m_taskRunQueue->GetTaskInSpecId(value["id"].asString());
  26.                 if(!task){
  27.                         // TODO: log
  28.                         return;
  29.                 }

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

  34.                 task->SetProgress(value["progress"].asInt());
  35.                
  36.         } else {
  37.                 TsUpdate::OnUpdateInfo(value,session);
  38.         }
  39. }
 楼主| keer_zu 发表于 2016-6-8 15:56 | 显示全部楼层
yyy71cj 发表于 2016-6-8 15:30
若是能把这类图的继承、使用关系什么的先画出来就好了

有的,之前发了一部分了。后面有所调整。整理好了一起发出。
 楼主| keer_zu 发表于 2016-6-10 18:49 | 显示全部楼层
yyy71cj 发表于 2016-6-9 15:27
我倒没印象,很多人喜欢看代码,可是我比较怕……

其实我也怕代码,我更喜欢图。然而......
 楼主| keer_zu 发表于 2016-6-12 08:44 | 显示全部楼层
yyy71cj 发表于 2016-6-11 08:16
然而……代码……图……
没图,是吗?
设计工作的第一步,是啥? ...

第一步当然是第一次迭代过程的第一步:设计啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部