亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asynctcpsocket.cxx

?? 由GOOGLE的JINGLE項目中移植的網絡庫
?? CXX
字號:
/* * libjingle * Copyright 2004--2005, Google Inc. * * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met: * *  1. Redistributions of source code must retain the above copyright notice,  *     this list of conditions and the following disclaimer. *  2. Redistributions in binary form must reproduce the above copyright notice, *     this list of conditions and the following disclaimer in the documentation *     and/or other materials provided with the distribution. *  3. The name of the author may not be used to endorse or promote products  *     derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#if defined(_MSC_VER) && _MSC_VER < 1300#pragma warning(disable:4786 4530)#endif#include "asynctcpsocket.h"#include "byteorder.h"#include "common.h"namespace cricket {const size_t MAX_PACKET_SIZE = 64 * 1024;typedef uint16 PacketLength;const size_t PKT_LEN_SIZE = sizeof(PacketLength);const size_t BUF_SIZE = MAX_PACKET_SIZE + PKT_LEN_SIZE;AsyncTCPSocket::AsyncTCPSocket(AsyncSocket* socket) : AsyncPacketSocket(socket), insize_(BUF_SIZE), inpos_(0), outsize_(BUF_SIZE), outpos_(0) {  inbuf_ = new char[insize_];  outbuf_ = new char[outsize_];  ASSERT(socket_ != NULL);  socket_->SignalConnectEvent.connect(this, &AsyncTCPSocket::OnConnectEvent);  socket_->SignalReadEvent.connect(this, &AsyncTCPSocket::OnReadEvent);  socket_->SignalWriteEvent.connect(this, &AsyncTCPSocket::OnWriteEvent);  socket_->SignalCloseEvent.connect(this, &AsyncTCPSocket::OnCloseEvent);}AsyncTCPSocket::~AsyncTCPSocket() {  delete [] inbuf_;  delete [] outbuf_;}int AsyncTCPSocket::Send(const void *pv, size_t cb) {  if (cb > MAX_PACKET_SIZE) {    socket_->SetError(EMSGSIZE);    return -1;  }  // If we are blocking on send, then silently drop this packet  if (outpos_)    return static_cast<int>(cb);  PacketLength pkt_len = HostToNetwork16(static_cast<PacketLength>(cb));  memcpy(outbuf_, &pkt_len, PKT_LEN_SIZE);  memcpy(outbuf_ + PKT_LEN_SIZE, pv, cb);  outpos_ = PKT_LEN_SIZE + cb;  int res = Flush();  if (res <= 0) {    // drop packet if we made no progress    outpos_ = 0;     return res;  }  // We claim to have sent the whole thing, even if we only sent partial  return static_cast<int>(cb);}int AsyncTCPSocket::SendTo(const void *pv, size_t cb, const SocketAddress& addr) {  if (addr == GetRemoteAddress())    return Send(pv, cb);  ASSERT(false);  socket_->SetError(ENOTCONN);  return -1;}int AsyncTCPSocket::SendRaw(const void * pv, size_t cb) {  if (outpos_ + cb > outsize_) {    socket_->SetError(EMSGSIZE);    return -1;  }  memcpy(outbuf_ + outpos_, pv, cb);  outpos_ += cb;  return Flush();}void AsyncTCPSocket::ProcessInput(char * data, size_t& len) {  SocketAddress remote_addr(GetRemoteAddress());  while (true) {    if (len < PKT_LEN_SIZE)      return;    PacketLength pkt_len;    memcpy(&pkt_len, data, PKT_LEN_SIZE);    pkt_len = NetworkToHost16(pkt_len);    if (len < PKT_LEN_SIZE + pkt_len)      return;    SignalReadPacket(data + PKT_LEN_SIZE, pkt_len, remote_addr, this);    len -= PKT_LEN_SIZE + pkt_len;    if (len > 0) {      memmove(data, data + PKT_LEN_SIZE + pkt_len, len);    }  }}int AsyncTCPSocket::Flush() {  int res = socket_->Send(outbuf_, outpos_);  if (res <= 0) {    return res;  }  if (static_cast<size_t>(res) <= outpos_) {    outpos_ -= res;  } else {    ASSERT(false);    return -1;  }  if (outpos_ > 0) {    memmove(outbuf_, outbuf_ + res, outpos_);  }  return res;}void AsyncTCPSocket::OnConnectEvent(AsyncSocket* socket) {  SignalConnect(this);}void AsyncTCPSocket::OnReadEvent(AsyncSocket* socket) {  ASSERT(socket == socket_);  int len = socket_->Recv(inbuf_ + inpos_, insize_ - inpos_);  if (len < 0) {    // TODO: Do something better like forwarding the error to the user.    return;  }  inpos_ += len;  ProcessInput(inbuf_, inpos_);  if (inpos_ >= insize_) {    ASSERT(false);    inpos_ = 0;  }}void AsyncTCPSocket::OnWriteEvent(AsyncSocket* socket) {  ASSERT(socket == socket_);  if (outpos_ > 0) {    Flush();  }}void AsyncTCPSocket::OnCloseEvent(AsyncSocket* socket, int error) {  SignalClose(this, error);}} // namespace cricket

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av在线播放中文字幕| 国产精品网站一区| 亚洲精品国产高清久久伦理二区 | 性做久久久久久免费观看欧美| 91丨九色丨黑人外教| 国产精品福利一区二区| 岛国一区二区在线观看| 欧美色偷偷大香| 91在线观看成人| 亚洲一区二区精品视频| 亚洲一级二级在线| 亚洲精品美国一| 一区二区三区四区乱视频| 亚洲免费在线视频| 日韩美女视频19| 一区二区三区四区激情| 亚洲乱码国产乱码精品精可以看| 有码一区二区三区| 亚洲天堂网中文字| 亚洲一区二区三区影院| 亚洲激情五月婷婷| 一区二区三区欧美视频| 水蜜桃久久夜色精品一区的特点| 性欧美大战久久久久久久久| 在线中文字幕不卡| 99精品在线观看视频| 99麻豆久久久国产精品免费优播| 天堂av在线一区| 国产精品卡一卡二卡三| 亚洲国产岛国毛片在线| 中文字幕在线不卡国产视频| 亚洲一区二区三区四区五区黄| 一区二区三区四区乱视频| 日本成人在线看| 精品亚洲aⅴ乱码一区二区三区| 经典三级视频一区| 成人午夜在线免费| 99re热这里只有精品视频| 成人av一区二区三区| 欧美日韩卡一卡二| 成人久久视频在线观看| 99国内精品久久| 欧美视频在线不卡| 日韩欧美不卡一区| 国产亚洲成aⅴ人片在线观看| 国产精品久久久久影视| 国产精品久久久久久久午夜片 | 亚洲视频 欧洲视频| 国产精品久久久久9999吃药| 亚洲成人自拍一区| 国产中文字幕精品| 日本久久电影网| 日韩一区二区在线观看视频| 国产日韩欧美麻豆| 亚洲va欧美va国产va天堂影院| 日韩高清欧美激情| 亚洲一区在线视频| 国产一区日韩二区欧美三区| 成人av在线资源网| 色综合天天综合网国产成人综合天 | 亚洲自拍偷拍图区| 韩国视频一区二区| 91尤物视频在线观看| 五月婷婷激情综合| 成人av网站在线观看免费| 欧美三级中文字| 国产精品美女久久久久av爽李琼 | 国产亚洲欧美激情| 亚洲永久免费视频| 夫妻av一区二区| 欧美电影一区二区| 国产精品国产精品国产专区不蜜| 亚洲高清免费在线| 国产一区在线精品| 91麻豆精品国产91久久久久久久久| 国产亚洲精久久久久久| 亚洲成人自拍偷拍| 91精品福利视频| 国产亚洲成av人在线观看导航| 日韩在线a电影| 91免费在线播放| 久久久青草青青国产亚洲免观| 日日骚欧美日韩| 91蜜桃视频在线| 欧美国产一区二区| 久久爱另类一区二区小说| 欧美在线播放高清精品| 中文字幕在线观看一区| 精品系列免费在线观看| 91精品国产乱码| 亚洲一区二区视频在线观看| 国产精华液一区二区三区| 91精品国产全国免费观看| 亚洲在线观看免费| 久久99精品国产91久久来源| 91精品在线麻豆| 亚洲一区二区视频| 欧美色视频在线观看| 中文字幕一区二区三区色视频 | 在线欧美日韩精品| 亚洲人吸女人奶水| 99视频有精品| 久久女同互慰一区二区三区| 裸体歌舞表演一区二区| 777奇米四色成人影色区| 国产精品美女久久久久久久| 国产成人精品三级麻豆| 欧美在线短视频| 国产精品夫妻自拍| 国产91精品在线观看| 精品国产sm最大网站免费看| 免费av成人在线| av毛片久久久久**hd| 亚洲精品中文在线影院| 日本成人在线看| 欧洲视频一区二区| 亚洲免费观看视频| 91麻豆免费看| 亚洲在线视频网站| 欧美在线free| 日韩成人伦理电影在线观看| 欧美高清激情brazzers| 亚洲第一久久影院| 日韩一区二区三区在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 一本色道久久综合亚洲91| 日本一区二区电影| 波多野结衣91| 国产精品白丝在线| 一本到三区不卡视频| 亚洲免费av在线| 91 com成人网| 精品在线亚洲视频| 久久久精品黄色| 色欧美乱欧美15图片| 亚洲高清视频在线| 久久综合九色综合97婷婷女人| 国产精品18久久久久| 欧美成人女星排名| 不卡的av中国片| 亚洲另类在线视频| 日韩午夜精品电影| 国产乱码精品一品二品| 亚洲欧美日韩中文播放| 欧美日韩精品专区| 精品一区二区三区日韩| 国产精品久久久久久久久图文区| 色婷婷av久久久久久久| 麻豆极品一区二区三区| 国产三级三级三级精品8ⅰ区| 首页国产欧美久久| 欧美高清在线一区| 在线亚洲免费视频| 久久99久久99精品免视看婷婷 | 亚洲一区二区三区小说| 日韩精品专区在线| 成人在线视频一区| 一区二区三区在线观看欧美| 91精品国产色综合久久ai换脸| 国产精品一二二区| 亚洲无人区一区| 亚洲精品在线免费播放| aaa亚洲精品一二三区| 午夜欧美电影在线观看| 26uuu久久综合| 91久久人澡人人添人人爽欧美| 午夜久久久久久| 成人免费一区二区三区在线观看| 欧美精品xxxxbbbb| 99久久精品费精品国产一区二区| 首页国产丝袜综合| 久久久久久麻豆| 欧美一级生活片| 99久久伊人网影院| 国产精品综合二区| 亚洲成人黄色小说| 亚洲欧美日韩中文播放| 精品不卡在线视频| 欧美女孩性生活视频| 成人免费看视频| 午夜在线电影亚洲一区| 综合精品久久久| 久久伊99综合婷婷久久伊| 91精品国产综合久久久久久久久久| 成人午夜精品在线| 国产在线一区二区综合免费视频| 亚洲综合网站在线观看| 精品国产一区a| 欧美日韩视频一区二区| av一区二区三区黑人| 久久国产麻豆精品| 亚洲国产裸拍裸体视频在线观看乱了 | 色哟哟在线观看一区二区三区| 日韩国产欧美视频| 亚洲精品日韩专区silk| 国产婷婷色一区二区三区在线| 日韩欧美亚洲国产精品字幕久久久| 欧洲av在线精品| 在线这里只有精品| 成人黄色大片在线观看|