2005 年 12 月 24 日 19 時 45 分

実装開始


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


いよいよ FTP サーバの実装に入る
プログラミング環境は色々と迷ったが、
オーソドックスに C/C++ にすることにした。

すぐにでもソケットの処理に入ってもいいが、
ここは趣味。最大限悪い癖を発揮して、
意味も無く外堀のクラス化を進めていこう。

ソケットを扱うサーバプログラミングの場合、
マルチスレッドになることが多い。
Thread 周りのクラスを作成しよう。

// API の例外
struct WindowsException : public std::runtime_error {
    // 省略
};

// HANDLE のラッパ
class Handle {
public:
    Handle(HANDLE handle) throw();
    virtual HANDLE GetHandle(void) const throw();
};

// WaitForSingleObject で待機可能なハンドル
class WaitableHandle : public Handle {
public:
    WaitableHandle(HANDLE handle) throw();
    virtual DWORD Wait(DWORD timeout) const throw(WindowsException) {
};

// スレッド。継承して threadMain をオーバーライド
class Thread : public WaitableHandle {
public:
    virtual void Shutdown() throw (WindowsException);
protected:
    Thread(void) throw (WindowsException);
    virtual DWORD threadMain(void);
};

こんなとこかな。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.