Esempio n. 1
0
    int JackNetAdapter::Write()
    {
        EncodeSyncPacket();

        if (SyncSend() == SOCKET_ERROR) {
            return SOCKET_ERROR;
        }

        return DataSend();
    }
Esempio n. 2
0
void CCLient::OnConnect( int nConnectID )
{
	theConsole.Trace("Client","OnConnected ConnectID:%d",nConnectID);
	std::string strHttpReq = "";								  
	strHttpReq += "GET / HTTP/1.1\r\n";
	strHttpReq += "Accept: text/html, application/xhtml+xml, */*\r\n";
	strHttpReq += "Accept-Language: zh-CN\r\n";
	strHttpReq += "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\r\n";
	strHttpReq += "Accept-Encoding: gzip, deflate\r\n";
	strHttpReq += "Host: 127.0.0.1:80\r\n";
	strHttpReq += "Connection: Keep-Alive\r\n";
	SyncSend(strHttpReq.c_str(),strHttpReq.length()+1);
}
Esempio n. 3
0
 void Send(const T& value) {
     if (self_verify_ && is_loopback_) {
         // for communication verification, send hash_code.
         size_t hash_code = typeid(T).hash_code();
         SyncSend(&hash_code, sizeof(hash_code));
     }
     if (std::is_pod<T>::value) {
         // send PODs directly from memory.
         SyncSend(&value, sizeof(value));
     }
     else if (data::Serialization<BufferBuilder, T>::is_fixed_size) {
         // fixed_size items can be sent without size header
         static constexpr size_t fixed_size
             = data::Serialization<BufferBuilder, T>::fixed_size;
         if (fixed_size < 2 * 1024 * 1024) {
             // allocate buffer on stack (no allocation)
             using FixedBuilder = FixedBufferBuilder<fixed_size>;
             FixedBuilder fb;
             data::Serialization<FixedBuilder, T>::Serialize(value, fb);
             assert(fb.size() == fixed_size);
             SyncSend(fb.data(), fb.size());
         }
         else {
             // too big, use heap allocation
             BufferBuilder bb;
             data::Serialization<BufferBuilder, T>::Serialize(value, bb);
             SyncSend(bb.data(), bb.size());
         }
     }
     else {
         // variable length items must be prefixed with size header
         BufferBuilder bb;
         data::Serialization<BufferBuilder, T>::Serialize(value, bb);
         size_t size = bb.size();
         SyncSend(&size, sizeof(size), MsgMore);
         SyncSend(bb.data(), bb.size());
     }
 }
Esempio n. 4
0
ssize_t Connection::SendOne(const void* data, size_t size, Flags flags) {
    SyncSend(data, size, flags);
    return size;
}
Esempio n. 5
0
void Connection::SyncRecvSend(const void* send_data, size_t send_size,
                              void* recv_data, size_t recv_size) {
    SyncRecv(recv_data, recv_size);
    SyncSend(send_data, send_size, NoFlags);
}