メインページ   モジュール   名前空間一覧   クラス階層   アルファベット順一覧   構成   ファイル一覧   構成メンバ   ファイルメンバ   関連ページ    

TSleepCommand.cc

解説を見る。
00001 // =====================================================================
00002 //  $Id: TSleepCommand.cc,v 1.8 2004/03/07 10:30:28 goiwai Exp $
00003 //  $Name: CLDAQ-1-14-03 $
00004 //  $Log: TSleepCommand.cc,v $
00005 //  Revision 1.8  2004/03/07 10:30:28  goiwai
00006 //  ROOTに組みこむためのおまじないマクロを埋めこみました。
00007 //  全てにおいて完全に動作するわけではありません。
00008 //
00009 //  Revision 1.7  2003/11/27 07:35:07  goiwai
00010 //  *** empty log message ***
00011 //
00012 //  Revision 1.6  2003/11/25 05:09:44  goiwai
00013 //  Threadといっしょにスリープしてしまう問題に終止符.
00014 //
00015 //  Revision 1.5  2003/10/06 17:02:37  goiwai
00016 //  *** empty log message ***
00017 //
00018 //  Revision 1.4  2003/08/25 10:42:21  goiwai
00019 //  だめです.やっぱりスレッドも一緒に止まりますね.すみません.
00020 //  あと, /system/execute もなんだかおかしいようです.
00021 //  近々,直します.
00022 //
00023 //  Revision 1.3  2003/08/25 10:37:14  goiwai
00024 //  sleepすると,スレッドも一緒にスリープしてしまうので,子プロセスを作って,
00025 //  その中でsleepするようにしました.EventLoopは動き続けます.
00026 //  これによって,なにが出来るかというと,
00027 //  /run/start
00028 //  /system/sleep 10
00029 //  /run/suspend
00030 //  /run/stop
00031 //  といったマクロを食わせることによって,10秒のランを実行するはずです.
00032 //
00033 //  Revision 1.2  2003/07/30 16:17:33  goiwai
00034 //  ファイルにコミットログをつけることにしました.
00035 //
00036 // =====================================================================
00037 #include "TSleepCommand.hh"
00038 #include "TRunManager.hh"
00039 #include "TRegularExpression.hh"
00040 
00041 static const Tstring _name = "/system/sleep";
00042 static const Tstring _desc =
00043 "Sleep a parent process."
00044 "\n"
00045 "Some thread processes go on."
00046 "\n"
00047 "This command can accept only one argument and must be digit."
00048 "\n"
00049 "CLDAQ> sleep 10";
00050 
00051 TSleepCommand::TSleepCommand( TRunManager* manager )
00052   : TCommand( manager, _name, _desc )
00053 {;}
00054 
00055 TSleepCommand::~TSleepCommand()
00056 {;}
00057 
00058 // TODO: バッチモードで実行するとだめなのです
00059 Tvoid TSleepCommand::Execute( const TstringList& arguments )
00060 {
00061   static TRegularExpression regex( "^[0-9]+$" );
00062 
00063   if ( arguments.empty() ) {
00064     ShowCommandDetail();
00065   } else {
00066     Tstring strtime = arguments[ 0 ];
00067     if ( regex == strtime ) {
00068       sleep( strtoi( strtime ) );
00069     } else {
00070       ShowCommandDetail();
00071     }
00072   }
00073 
00074   return;
00075 }
00076 
00077 #ifdef __CLDAQ_ROOT_DLL
00078     ClassImp(TSleepCommand)
00079 #endif


CLDAQ - a Class Library for DataAcQuisition (Version 1.14.3)
Go IWAI -- goiwai at users.sourceforge.jp