Example #1
1
bool NetResMgr::TcpSend(TcpHandle handle, const char* packet, int size) {
  if (!packet || size <= 0 || size > MAX_TCP_PACKET_SIZE) {
    LOG(kError, "TcpSend failed: invalid parameter of handle %u.", handle);
    return false;
  }
  auto socket = GetTcpSocket(handle);
  if (!socket) {
    return false;
  }
  auto send_buffer = std::make_unique<tcp::SendBuffer>();
  if (!send_buffer) {
    LOG(kError, "TcpSend failed: can not new send buffer.", handle);
    return false;
  }
  send_buffer->set_buffer(packet, size);
  send_buffer->set_handle(handle);
  if (!socket->AsyncSend(send_buffer->buffer(), send_buffer->buffer_size(), send_buffer->ovlp())) {
    return false;
  }
  send_buffer.release();
  return true;
}
Example #2
0
        void OnSent(StreamBuffer::Node* node, const error_code& error)
        {
            m_RequestSendRequestCount--;
            if (error.value() != 0)
            {
                m_Wrapper->m_OStream.DeallocNode(node);
                if (m_PendingRecvRequestCount == 0 && m_RequestSendRequestCount == 0)
                {
                    if (!(error.value() == 104 || error.value() == 54))
                    {
                        m_Wrapper->Close(); 
                    }
                    if (!m_Wrapper->m_OnConnectBroken.Empty())
                    {
                        m_Wrapper->m_OnConnectBroken(m_Wrapper, m_Wrapper->m_IStream, m_Wrapper->m_OStream);
                    }
                }
            } 
            else 
            {
                if (!m_Wrapper->m_OnSent.Empty())
                {
                     m_Wrapper->m_OnSent(m_Wrapper, (const void *)((char *)node + sizeof(StreamBuffer::Node)), node->m_Len);
                }

                m_Wrapper->m_OStream.DeallocNode(node);
                AsyncSend();
            }
        } 
Example #3
0
 void OnConnected(IGame::TcpConnection*, IGame::StreamBuffer& istream, IGame::StreamBuffer& ostream)
 {
     std::cout << "Connect to server success" << std::endl;
     std::cout << "Remote Ip: " << GetFromIp().c_str() 
               << " Remote Port: " << GetFromPort() << std::endl;
     ostream << m_EchoSeq; 
     ostream << "tcp echo test";
     AsyncSend();
 }
Example #4
0
    void OnReceived(IGame::TcpConnection*, IGame::StreamBuffer& istream, IGame::StreamBuffer& ostream)
    {
        unsigned int id; 
        std::string str;

        istream >> id; 
        istream >> str;
        std::cout << id << " " << str.c_str() << std::endl;
        IGame::Time::Sleep(1000);
        m_EchoSeq++;

        ostream << m_EchoSeq;
        ostream << "tcp echo test";
        AsyncSend();
    }
Example #5
0
bool SessionUDP::AsyncSend(const char* data,size_t size,IPAddress& addr)
{
	if(size>4096)
	{
		System::LogTrace("size>4096 in %s",__FUNCTION__);
		return false;
	}

	TempPtrT<MyOverLappedEx> q=lkfq_free.getq();
	if(!q)
	{
		q.reset(new MyOverLappedEx);
	}

	q->size=size;
	q->peer=addr;
	memcpy(q->buffer,data,size);
	return AsyncSend(q);
}
Example #6
0
 void AsyncSend(StreamBuffer& buffer, _UInt32 len)
 {
     buffer.Read(m_Wrapper->m_OStream, len);
     AsyncSend();
 }
Example #7
0
 void AsyncSend(const void* data, _UInt32 len)
 {
     m_Wrapper->m_OStream.Write((const _Int8 *)data, len);
     AsyncSend();
 }
Example #8
0
bool SessionUDP::AsyncSend(const char* data,size_t size)
{
	return AsyncSend(data,size,sk_local.peer);
}
Example #9
0
	bool IOSocket::AsyncSend(SendIOServerData *data)
	{
		return AsyncSend(data, nullptr);
	}