/*-------------------------------------------------------------------------- Project: HorizonSDK File: rdt_HostBase.h Copyright 2009 Nintendo. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Date:: 2010-09-14#$ $Rev: 25753 $ $Author: hiratsu_daisuke $ *-------------------------------------------------------------------------*/ #include "stdafx.h" #ifndef NN_RDT_HOSTBASE_H_ #define NN_RDT_HOSTBASE_H_ #include "rdt_Transceiver.h" namespace nn { namespace rdt { namespace CTR { /*! @brief これはSender, Receiverの基底クラスです。 両者に共通する処理をまとめています。 */ class HostBase{ public: /*! @brief コンストラクタです。初期化フラグを下ろす以外のことはしません。 */ HostBase(void); /*! @brief デストラクタです。基底クラスなので、仮想とします。 */ virtual ~HostBase(void); /*! @brief 初期化します。 */ #ifdef _WIN32 nn::Result Initialize(SOCKET &sock); #elif defined(NN_PLATFORM_CTR) nn::Result Initialize(u16 nodeId, u8 port); // 送信先のノードIDとポート番号 #else #error no platform selected #endif /*! @brief 解放します。 */ void Finalize(void); /*! @brief パケロス率を設定します(デバッグ用)。 0 <= per <= 100の値を与えます。 */ void SetPacketLossRatio(int per); /*! @brief 直近のエラーコードを取得します。 */ nn::Result GetErrorCode(void) const { return m_resultCode; } /*! @brief このクラスの各種情報をプリントします(解析用) */ static void PrintProperty(void); protected: // セグメントを送信。再送処理がしたい場合は、この関数の外でやりましょう。 // パケロス率に応じて、送信が失敗します(送信が行われない) void putSegment(const Segment &seg); // セグメントを受信。 nn::Result pullSegment(Segment *pSeg); // RSTコントロールビットを含んだセグメントを送信。 // このセグメントは再送対象とはしない。 void sendRstSegment(u32 seq); // RSTとACKコントロールビットを含んだセグメントを送信。 // このセグメントは再送対象とはしない。 void sendRstAckSegment(u32 seq, u32 ack); // エラー情報の記録。エラーが発生する状況になったら、この関数を呼ぶこと。 void errorHandling(Result resultCode); private: /*! @brief コピーコンストラクタは封印します。 */ HostBase (const HostBase&); /*! @brief 代入演算子は封印します。 */ HostBase& operator=(const HostBase&); Transceiver m_transceiver; // 送受信オブジェクト int m_packetLossRatio; // パケロス率。ゼロ以上、100以下。 Result m_resultCode; // 直近のリザルトコードをここに記録する bool m_initialized; u8 m_padding[3]; }; }}} // namespace nn::rdt::CTR #endif // end of NN_RDT_HOSTBASE_H_