示例#1
0
	SharedPointer<ConnInfo> BaseProxy::get_Conn(){
        SharedPointer<ConnInfo> conn;
        if (_use_existing_socket) {
            conn = ConnectionManager::get_instance()->get_connection(_name);
        } else {
            SharedPointer<BinaryProtocol> prot;
			bool ok=false;

			while(_protocols.get(prot, 10)==0&&!ok){ //deal CLOSE_WAIT connect 
				if(prot.is_valid()&&prot->getTransport().is_valid()){
					if((ok=SocketTool::is_ok(prot->getTransport()->id()))){
						conn=SharedPointer<ConnInfo>(new(std::nothrow)ConnInfo(prot));
						break;
					}
				}
			}

            if(!ok){
                conn=create_Conn();
            }
        }
        
        if (conn.is_valid() && conn->proto.is_valid() 
            && conn->proto->getTransport().is_valid()) { 
            int32_t tm = 0;
            if (get_property(PROXY_SEND_TIMEOUT, tm)) { 
                SocketTool::set_sndtimeout(conn->proto->getTransport()->id(), tm);
            }
            if (get_property(PROXY_RECV_TIMEOUT, tm)) {
                SocketTool::set_rcvtimeout(conn->proto->getTransport()->id(), tm);
            }
        }

        return conn;
    }
示例#2
0
	SharedPointer<ConnInfo> SSLBaseProxy::create_Conn(){
        SharedPointer<bgcc::ClientSocket> client = 
			SharedPointer<bgcc::SSLClientSocket>(
					new SSLClientSocket(_serverinfo.getIP(),_serverinfo.getPort()));
        
		if (client.is_valid()) {
            if(client->open()==0){
                SharedPointer<BinaryProtocol> prot = 
					SharedPointer<BinaryProtocol>(new bgcc::BinaryProtocol(client));
                if(prot.is_valid()&& prot->getTransport().is_valid()){
                    int32_t tm=0;
                    if(get_property(PROXY_SEND_TIMEOUT, tm)){
                        SocketTool::set_sndtimeout(prot->getTransport()->id(), tm);
                    }
                    if(get_property(PROXY_RECV_TIMEOUT, tm)){
                        SocketTool::set_rcvtimeout(prot->getTransport()->id(), tm);
                    }
                }

                return SharedPointer<ConnInfo>(new ConnInfo(prot));
            }
        }
        return SharedPointer<ConnInfo>(NULL);
    }