PuzzleSDK
WebSocketDelayTest类 参考

#include <WebSocketDelayTest.h>

+ 类 WebSocketDelayTest 继承关系图:
+ WebSocketDelayTest 的协作图:

Public 成员函数

 CREATE_FUNC (WebSocketDelayTest)
 
 WebSocketDelayTest ()
 
virtual ~WebSocketDelayTest ()
 
virtual void onExit () override
 
virtual void onOpen (cocos2d::network::WebSocket *ws) override
 
virtual void onMessage (cocos2d::network::WebSocket *ws, const cocos2d::network::WebSocket::Data &data) override
 
virtual void onClose (cocos2d::network::WebSocket *ws) override
 
virtual void onError (cocos2d::network::WebSocket *ws, const cocos2d::network::WebSocket::ErrorCode &error) override
 
void onMenuSendTextClicked (cocos2d::Ref *sender)
 
virtual std::string title () const override
 
void startTestCallback (cocos2d::Ref *sender)
 
int64_t getNowMircroSeconds ()
 
void doSendText ()
 
void doReceiveText ()
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual std::string subtitle () const
 
virtual Type getTestType () const
 
virtual float getDuration () const
 
virtual std::string getExpectedOutput () const
 
virtual std::string getActualOutput () const
 
virtual void restartTestCallback (cocos2d::Ref *sender)
 
virtual void nextTestCallback (cocos2d::Ref *sender)
 
virtual void priorTestCallback (cocos2d::Ref *sender)
 
virtual void onBackCallback (cocos2d::Ref *sender)
 
void setTestSuite (TestSuite *testSuite)
 
TestSuitegetTestSuite () const
 
float getRunTime () const
 
void setTestCaseName (const std::string &name)
 
std::string getTestCaseName () const
 
const cocos2d::Label * getSubtitleLable () const
 
const cocos2d::MenuItemImage * getRestartTestItem () const
 
virtual void onEnter () override
 

Private 属性

cocos2d::network::WebSocket * _wsiSendText
 
cocos2d::Label * _sendTextStatus
 
cocos2d::Label * _progressStatus
 
cocos2d::Menu * _startTestMenu
 
int64_t _totalDelayMircoSec = 0
 
int64_t _sendTimeMircoSec = 0
 
int64_t _receiveTimeMircoSec = 0
 
int _sendTextTimes = 0
 
int _receiveTextTimes = 0
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

详细描述

在文件 WebSocketDelayTest.h10 行定义.

构造及析构函数说明

◆ WebSocketDelayTest()

WebSocketDelayTest::WebSocketDelayTest ( )

在文件 WebSocketDelayTest.cpp34 行定义.

35: _wsiSendText(nullptr)
36, _sendTextStatus(nullptr)
37, _progressStatus(nullptr)
39{
40 auto winSize = Director::getInstance()->getWinSize();
41
42 const int MARGIN = 40;
43 const int SPACE = 35;
44
45 auto menuRequest = Menu::create();
46 menuRequest->setPosition(Vec2::ZERO);
47 addChild(menuRequest);
48
49 // Send Text
50 char cmdLabel[60] = { 0 };
51 snprintf(cmdLabel, 60, "Send %d Text", SEND_TEXT_TIMES);
52 auto labelSendText = Label::createWithTTF(cmdLabel, "fonts/arial.ttf", 20);
53 auto itemSendText = MenuItemLabel::create(labelSendText, CC_CALLBACK_1(WebSocketDelayTest::onMenuSendTextClicked, this));
54 itemSendText->setPosition(Vec2(winSize.width / 2, winSize.height - MARGIN - SPACE));
55 menuRequest->addChild(itemSendText);
56
57 // Send Text Status Label
58 _sendTextStatus = Label::createWithTTF("Waiting connection...", "fonts/arial.ttf", 16, Size(160, 100), TextHAlignment::CENTER, TextVAlignment::TOP);
59 _sendTextStatus->setAnchorPoint(Vec2(0, 0));
60 _sendTextStatus->setPosition(Vec2(VisibleRect::left().x, VisibleRect::rightBottom().y + 25));
61 this->addChild(_sendTextStatus);
62
63
64 // Error Label
65 _progressStatus = Label::createWithTTF(".", "fonts/arial.ttf", 16, Size(160, 100), TextHAlignment::CENTER, TextVAlignment::TOP);
66 _progressStatus->setAnchorPoint(Vec2(0, 0));
67 _progressStatus->setPosition(Vec2(VisibleRect::left().x + 320, VisibleRect::rightBottom().y + 25));
68 this->addChild(_progressStatus);
69
70 auto startTestLabel = Label::createWithTTF("DO Connect!", "fonts/arial.ttf", 16);
71 auto startTestItem = MenuItemLabel::create(startTestLabel, CC_CALLBACK_1(WebSocketDelayTest::startTestCallback, this));
72 startTestItem->setPosition(Vec2(VisibleRect::center().x - 150, VisibleRect::bottom().y + 150));
73 _startTestMenu = Menu::create(startTestItem, nullptr);
74 _startTestMenu->setPosition(Vec2::ZERO);
75 this->addChild(_startTestMenu, 1);
76}
#define SEND_TEXT_TIMES
static cocos2d::Vec2 center()
Definition: VisibleRect.cpp:69
static cocos2d::Vec2 bottom()
Definition: VisibleRect.cpp:63
static cocos2d::Vec2 left()
Definition: VisibleRect.cpp:45
static cocos2d::Vec2 rightBottom()
Definition: VisibleRect.cpp:93
cocos2d::Menu * _startTestMenu
cocos2d::Label * _progressStatus
cocos2d::Label * _sendTextStatus
cocos2d::network::WebSocket * _wsiSendText
void onMenuSendTextClicked(cocos2d::Ref *sender)
void startTestCallback(cocos2d::Ref *sender)

引用了 _progressStatus, _sendTextStatus, _startTestMenu, VisibleRect::bottom(), VisibleRect::center(), VisibleRect::left(), onMenuSendTextClicked(), VisibleRect::rightBottom(), SEND_TEXT_TIMES , 以及 startTestCallback().

+ 函数调用图:

◆ ~WebSocketDelayTest()

WebSocketDelayTest::~WebSocketDelayTest ( )
virtual

在文件 WebSocketDelayTest.cpp78 行定义.

79{
80
81}

成员函数说明

◆ CREATE_FUNC()

WebSocketDelayTest::CREATE_FUNC ( WebSocketDelayTest  )

◆ doReceiveText()

void WebSocketDelayTest::doReceiveText ( )

在文件 WebSocketDelayTest.cpp131 行定义.

引用了 _receiveTimeMircoSec, _sendTimeMircoSec, _totalDelayMircoSec, doSendText() , 以及 getNowMircroSeconds().

被这些函数引用 onMessage().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ doSendText()

void WebSocketDelayTest::doSendText ( )

在文件 WebSocketDelayTest.cpp115 行定义.

116{
117 _sendTextTimes += 1;
119 {
120 _sendTextStatus->setString("Test Done!");
121 return;
122 }
123
124 char statueBuffer[80] = { 0 };
125 snprintf(statueBuffer, 80, "Sending #%d/%d text", _sendTextTimes, SEND_TEXT_TIMES);
126 _sendTextStatus->setString(statueBuffer);
128 _wsiSendText->send("Hello WebSocket, I'm a text message.");
129}

引用了 _sendTextStatus, _sendTextTimes, _sendTimeMircoSec, _wsiSendText, getNowMircroSeconds() , 以及 SEND_TEXT_TIMES.

被这些函数引用 doReceiveText() , 以及 onMenuSendTextClicked().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ getNowMircroSeconds()

int64_t WebSocketDelayTest::getNowMircroSeconds ( )
inline

在文件 WebSocketDelayTest.h32 行定义.

33 {
34 auto now = std::chrono::high_resolution_clock::now();
35 return std::chrono::duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count();
36 }

被这些函数引用 doReceiveText() , 以及 doSendText().

+ 这是这个函数的调用关系图:

◆ onClose()

void WebSocketDelayTest::onClose ( cocos2d::network::WebSocket *  ws)
overridevirtual

在文件 WebSocketDelayTest.cpp169 行定义.

170{
171 log("onClose: websocket instance (%p) closed.", ws);
172 if (ws == _wsiSendText)
173 {
174 _wsiSendText = nullptr;
175 _sendTextStatus->setString("Send Text WS was closed");
176 }
177 // Delete websocket instance.
178 CC_SAFE_DELETE(ws);
179 log("WebSocketDelayTest ref: %u", _referenceCount);
180 release();
181}

引用了 _sendTextStatus , 以及 _wsiSendText.

◆ onError()

void WebSocketDelayTest::onError ( cocos2d::network::WebSocket *  ws,
const cocos2d::network::WebSocket::ErrorCode &  error 
)
overridevirtual

在文件 WebSocketDelayTest.cpp183 行定义.

184{
185 log("Error was fired, error code: %d", static_cast<int>(error));
186 char buf[100] = {0};
187 sprintf(buf, "An error was fired, code: %d", static_cast<int>(error));
188
189 if (ws == _wsiSendText)
190 {
191 _sendTextStatus->setString(buf);
192 }
193
195}

引用了 _sendTextStatus, _sendTimeMircoSec , 以及 _wsiSendText.

◆ onExit()

void WebSocketDelayTest::onExit ( )
overridevirtual

在文件 WebSocketDelayTest.cpp83 行定义.

84{
85 if (_wsiSendText)
86 {
87 _wsiSendText->closeAsync();
88 }
89
90 Node::onExit();
91}

引用了 _wsiSendText.

◆ onMenuSendTextClicked()

void WebSocketDelayTest::onMenuSendTextClicked ( cocos2d::Ref *  sender)

在文件 WebSocketDelayTest.cpp198 行定义.

199{
200 if (! _wsiSendText)
201 {
202 return;
203 }
204
205 if (_wsiSendText->getReadyState() == network::WebSocket::State::OPEN)
206 {
207
208 _sendTextTimes = 0;
210 doSendText();
211 }
212 else
213 {
214 std::string warningStr = "send text websocket instance wasn't ready...";
215 log("%s", warningStr.c_str());
216 _sendTextStatus->setString(warningStr.c_str());
217 }
218}

引用了 _receiveTextTimes, _sendTextStatus, _sendTextTimes, _wsiSendText , 以及 doSendText().

被这些函数引用 WebSocketDelayTest().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ onMessage()

void WebSocketDelayTest::onMessage ( cocos2d::network::WebSocket *  ws,
const cocos2d::network::WebSocket::Data &  data 
)
overridevirtual

在文件 WebSocketDelayTest.cpp153 行定义.

154{
155 if (!data.isBinary)
156 {
158 char times[100] = {0};
159 sprintf(times, "%d", _receiveTextTimes);
160 std::string textStr = std::string("response text msg: ")+data.bytes+", "+times;
161 log("%s", textStr.c_str());
163 memset(times, 0, 100);
164 snprintf(times, 100, "total delay %f seconds", (float)(_totalDelayMircoSec/ 1000000.0));
165 _progressStatus->setString(times);
166 }
167}

引用了 _progressStatus, _receiveTextTimes, _totalDelayMircoSec , 以及 doReceiveText().

+ 函数调用图:

◆ onOpen()

void WebSocketDelayTest::onOpen ( cocos2d::network::WebSocket *  ws)
overridevirtual

在文件 WebSocketDelayTest.cpp140 行定义.

141{
142 char status[256] = {0};
143 sprintf(status, "Opened, url: %s, protocol: %s", ws->getUrl().c_str(), ws->getProtocol().c_str());
144
145 log("Websocket (%p) was opened, url: %s, protocol: %s", ws, ws->getUrl().c_str(), ws->getProtocol().c_str());
146 if (ws == _wsiSendText)
147 {
148 _sendTextStatus->setString(status);
149
150 }
151}

引用了 _sendTextStatus , 以及 _wsiSendText.

◆ startTestCallback()

void WebSocketDelayTest::startTestCallback ( cocos2d::Ref *  sender)

在文件 WebSocketDelayTest.cpp93 行定义.

94{
95 removeChild(_startTestMenu);
96 _startTestMenu = nullptr;
97
98 _wsiSendText = new network::WebSocket();
99
100 std::vector<std::string> protocols;
101 protocols.push_back("myprotocol_1");
102 protocols.push_back("myprotocol_2");
103 if (!_wsiSendText->init(*this, "wss://echo.websocket.org", &protocols, "cacert.pem"))
104 {
105 CC_SAFE_DELETE(_wsiSendText);
106 }
107 else
108 {
109 retain(); // Retain self to avoid WebSocketDelayTest instance be deleted immediately, it will be released in WebSocketDelayTest::onClose.
110
111 }
112
113}

引用了 _startTestMenu , 以及 _wsiSendText.

被这些函数引用 WebSocketDelayTest().

+ 这是这个函数的调用关系图:

◆ title()

virtual std::string WebSocketDelayTest::title ( ) const
inlineoverridevirtual

重载 TestCase .

在文件 WebSocketDelayTest.h29 行定义.

29{ return "WebSocket Delay Test"; }

类成员变量说明

◆ _progressStatus

cocos2d::Label* WebSocketDelayTest::_progressStatus
private

在文件 WebSocketDelayTest.h45 行定义.

被这些函数引用 onMessage() , 以及 WebSocketDelayTest().

◆ _receiveTextTimes

int WebSocketDelayTest::_receiveTextTimes = 0
private

在文件 WebSocketDelayTest.h53 行定义.

被这些函数引用 onMenuSendTextClicked() , 以及 onMessage().

◆ _receiveTimeMircoSec

int64_t WebSocketDelayTest::_receiveTimeMircoSec = 0
private

在文件 WebSocketDelayTest.h50 行定义.

被这些函数引用 doReceiveText().

◆ _sendTextStatus

cocos2d::Label* WebSocketDelayTest::_sendTextStatus
private

在文件 WebSocketDelayTest.h44 行定义.

被这些函数引用 doSendText(), onClose(), onError(), onMenuSendTextClicked(), onOpen() , 以及 WebSocketDelayTest().

◆ _sendTextTimes

int WebSocketDelayTest::_sendTextTimes = 0
private

在文件 WebSocketDelayTest.h52 行定义.

被这些函数引用 doSendText() , 以及 onMenuSendTextClicked().

◆ _sendTimeMircoSec

int64_t WebSocketDelayTest::_sendTimeMircoSec = 0
private

在文件 WebSocketDelayTest.h49 行定义.

被这些函数引用 doReceiveText(), doSendText() , 以及 onError().

◆ _startTestMenu

cocos2d::Menu* WebSocketDelayTest::_startTestMenu
private

在文件 WebSocketDelayTest.h46 行定义.

被这些函数引用 startTestCallback() , 以及 WebSocketDelayTest().

◆ _totalDelayMircoSec

int64_t WebSocketDelayTest::_totalDelayMircoSec = 0
private

在文件 WebSocketDelayTest.h48 行定义.

被这些函数引用 doReceiveText() , 以及 onMessage().

◆ _wsiSendText

cocos2d::network::WebSocket* WebSocketDelayTest::_wsiSendText
private

该类的文档由以下文件生成: