1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: rdt_HostBase.h 4 5 Copyright (C)2009-2012 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 46347 $ 14 *---------------------------------------------------------------------------*/ 15 16 #include "stdafx.h" 17 18 #ifndef NN_LIBRARIES_RDT_CTR_RDT_HOSTBASE_H_ 19 #define NN_LIBRARIES_RDT_CTR_RDT_HOSTBASE_H_ 20 21 22 #include "rdt_Transceiver.h" 23 24 namespace nn { namespace rdt { namespace CTR { 25 26 /* Please see man pages for details 27 28 29 */ 30 class HostBase{ 31 public: 32 33 /* Please see man pages for details 34 35 */ 36 HostBase(void); 37 38 /* Please see man pages for details 39 40 */ 41 virtual ~HostBase(void); 42 43 /* Please see man pages for details 44 45 */ 46 #ifdef _WIN32 47 nn::Result Initialize(SOCKET &sock); 48 #elif defined(NN_PLATFORM_CTR) 49 nn::Result Initialize(u16 nodeId, u8 port); // Sender node ID and port number 50 #else 51 #error no platform selected 52 #endif 53 54 /* Please see man pages for details 55 56 */ 57 void Finalize(void); 58 59 /* Please see man pages for details 60 61 62 */ 63 void SetPacketLossRatio(int per); 64 65 /* Please see man pages for details 66 67 */ GetErrorCode(void)68 nn::Result GetErrorCode(void) const { return m_resultCode; } 69 70 /* Please see man pages for details 71 72 */ 73 static void PrintProperty(void); 74 75 76 protected: 77 // Send segment. To perform resend process, do so outside of this function. 78 // Depending on the packet loss ratio, the send fails (send is not performed) 79 void putSegment(const Segment &seg); 80 81 // Receive segment. 82 nn::Result pullSegment(Segment *pSeg); 83 84 // Send segment containing the RST control bit. 85 // This segment is not a resend target. 86 void sendRstSegment(u32 seq); 87 88 // Send segment containing the RST and ACK control bits. 89 // This segment is not a resend target. 90 void sendRstAckSegment(u32 seq, u32 ack); 91 92 // Record error information. Call this function if in a state where an error occurs. 93 void errorHandling(Result resultCode); 94 95 96 private: 97 /* Please see man pages for details 98 99 */ 100 HostBase (const HostBase&); 101 102 /* Please see man pages for details 103 104 */ 105 HostBase& operator=(const HostBase&); 106 107 Transceiver m_transceiver; // Send/receive object 108 109 int m_packetLossRatio; // Packet loss ratio. No less than zero, no more than 100. 110 111 Result m_resultCode; // Record the closest result code here. 112 113 bool m_initialized; 114 u8 m_padding[3]; 115 }; 116 117 118 }}} // namespace nn::rdt::CTR 119 120 #endif // end of NN_LIBRARIES_RDT_CTR_RDT_HOSTBASE_H_ 121