103 return (m_pWriter != NULL) ? m_pWriter->
CanWrite() :
false;
147 if ( m_pWriter == NULL )
155 return m_threadDispatch.
Start(_T(
"AsyncWriter:書込"));
169 m_threadDispatch.
Stop();
182 return m_OnDispatch(
new CWriteCmd(c));
194 return m_OnDispatch(
new CSeekCmd(iOffset, eSeek));
206 return m_OnDispatch(
new CSetEndCmd);
217 return m_OnDispatch(
new CCloseCmd);
228 return m_OnDispatch(piCmd);
236 enum{ WMWF_COMMAND = WM_APP };
246 virtual bool OnThreadDispatchReceive(UINT nMsg, WPARAM wParam, LPARAM lParam)
248 if ( nMsg == WMWF_COMMAND )
251 ICommand* piCmd =
reinterpret_cast<ICommand*
>(lParam);
252 if ( ! piCmd->Exec(*pFw) )
267 bool m_OnDispatch(ICommand* P)
270 WMWF_COMMAND,
reinterpret_cast<WPARAM
>(m_pWriter),
reinterpret_cast<LPARAM
>(P));
280 class CWriteCmd :
public ICommand
289 class CSeekCmd :
public ICommand
294 CSeekCmd(
int iOffset,
IWriter::ESeekMode eSeek) { m_iOffset = iOffset; m_eSeek = eSeek; }
295 bool Exec(
IWriter& fw) { fw.
Seek(m_iOffset, m_eSeek);
return true; }
299 class CSetEndCmd :
public ICommand
305 class CCloseCmd :
public ICommand
307 public:
bool Exec(
IWriter& fw) { fw.
Close();
return false; }
bool Close(void)
[実行] クローズ.
bool Write(const IConstCollectionT< BYTE > &c)
[実行] ファイル書き込み
bool SetPriority(int priority)
[設定] 優先度設定.
bool Seek(int iOffset, IWriter::ESeekMode eSeek=IWriter::TOP)
[実行] シーク
bool Command(ICommand *piCmd)
[実行] コマンド
bool IsAlive(void) const
[確認] 開始チェック.
bool SetEnd(void)
[実行] EOFを指定.
CAsyncWriter(void)
コンストラクタ
virtual ~CAsyncWriter(void)
デストラクタ
bool SetWriter(IWriter *pfw)
[設定] ライター設定
bool PostMessage(UINT nMsg, WPARAM wParam=0, LPARAM lParam=0) const
[設定] スレッドへPostMessage
bool SetPriority(int priority)
[設定] 優先度設定.
void SetListener(IListener *piListener)
[登録] リスナー登録
bool Start(LPCTSTR lpszName=NULL)
[設定] スレッド開始
bool Stop(void)
[設定] スレッド停止
virtual bool Exec(IWriter &fw)=0
[処理] 処理
virtual size_t Copy(const IConstCollectionT< TYP > &c)
[設定] コピー.
virtual LONGLONG Seek(LONGLONG llOffset, ESeekMode eSeek=TOP) const =0
[操作] シーク.
virtual void Close(void)=0
[操作] クローズ
virtual void SetEnd(void)=0
[設定] EOFを指定.
void WriteFrom(const IConstCollectionT< BYTE > &c)
[保存] 書き込み.
virtual bool CanWrite(void) const =0
[確認] 書込み可能か