1616#include < chrono>
1717#import " TquicResponse.h"
1818#import " TquicRequest.h"
19- #import " QCloudQuicSession .h"
19+ #import " QCloudQuicConfig .h"
2020// 每次发送的字节数
2121static const int64_t sentByte = 32768 ;
2222class TnetAsyncDelegate : public TnetRequestDelegate {
@@ -172,6 +172,7 @@ void OnConnectionClose(int error_code, const char* error_detail) override{
172172
173173 // This request has received all the data and finished.
174174 void OnRequestFinish (int stream_error) override {
175+
175176 NSError *error = nil ;
176177 if (stream_error != 0 ) {
177178 error = [[NSError alloc ] initWithDomain: NSURLErrorDomain code: stream_error userInfo: nil ];
@@ -190,31 +191,68 @@ @interface TquicConnection (){
190191 std::shared_ptr<TnetAsyncDelegate>tquic_delegate_sp;
191192}
192193@property (nonatomic ,strong )TquicRequest *quicReqeust;
193- @property ( nonatomic , weak )QCloudQuicSession *session;
194+
194195@end
195196
196197
197198@implementation TquicConnection
198199
199200-(void )tquicConnectWithQuicRequest : (TquicRequest *)quicRequest
200- session : (QCloudQuicSession *) session
201+
201202 didReceiveResponse : (TquicRequesDidReceiveResponseBlock)didReceiveResponse didReceiveData : (TquicRequestDidReceiveDataBlock)didReceiveData didSendBodyData : (TquicRequestDidSendBodyDataBlock)didSendBodyData RequestDidCompleteWithError : (TquicRequesDidCompleteWithErrorBlock)requestDidCompleteWithError {
202- [self onHandleQuicRequest: quicRequest session: session didReceiveResponse: didReceiveResponse didReceiveData: didReceiveData didSendBodyData: didSendBodyData RequestDidCompleteWithError: requestDidCompleteWithError];
203+ [self onHandleQuicRequest: quicRequest didReceiveResponse: didReceiveResponse didReceiveData: didReceiveData didSendBodyData: didSendBodyData RequestDidCompleteWithError: requestDidCompleteWithError];
203204
204205}
205206
206- -(void )onHandleQuicRequest : (TquicRequest *)quicRequest session : (QCloudQuicSession *) session didReceiveResponse : (TquicRequesDidReceiveResponseBlock)didReceiveResponse didReceiveData : (TquicRequestDidReceiveDataBlock)didReceiveData didSendBodyData : (TquicRequestDidSendBodyDataBlock)didSendBodyData RequestDidCompleteWithError : (TquicRequesDidCompleteWithErrorBlock)requestDidCompleteWithError {
207+ -(void )onHandleQuicRequest : (TquicRequest *)quicRequest didReceiveResponse : (TquicRequesDidReceiveResponseBlock)didReceiveResponse didReceiveData : (TquicRequestDidReceiveDataBlock)didReceiveData didSendBodyData : (TquicRequestDidSendBodyDataBlock)didSendBodyData RequestDidCompleteWithError : (TquicRequesDidCompleteWithErrorBlock)requestDidCompleteWithError {
207208 tquic_delegate_sp.reset (new TnetAsyncDelegate (quicRequest, didReceiveResponse,didReceiveData,didSendBodyData,requestDidCompleteWithError));
208209 TnetConfig config = TnetConfig ();
209210 if (quicRequest.body ) {
210211 config.upload_optimize_ = true ;
211212 }
212- config.congestion_type_ = kBBR ;
213- config.race_type = kQUICHTTP ;
213+
214+ CongestionType congestion_type;
215+ switch ([QCloudQuicConfig shareConfig ].congestion_type ) {
216+ case QCloudCongestionTypeCubicBytes:
217+ congestion_type = kCubicBytes ;
218+ break ;
219+ case QCloudCongestionTypeRenoBytes:
220+ congestion_type = kRenoBytes ;
221+ break ;
222+ case QCloudCongestionTypeBBR:
223+ congestion_type = kBBR ;
224+ break ;
225+ case QCloudCongestionTypePCC:
226+ congestion_type = kPCC ;
227+ break ;
228+ case QCloudCongestionTypeGoogCC:
229+ congestion_type = kGoogCC ;
230+ break ;
231+ default :
232+ break ;
233+ }
234+ config.congestion_type_ = congestion_type;
235+ RaceType raceType;
236+ switch ( [QCloudQuicConfig shareConfig ].race_type ) {
237+ case QCloudRaceTypeOnlyQUIC:
238+ raceType = kOnlyQUIC ;
239+ break ;
240+ case QCloudRaceTypeQUICHTTP:
241+ raceType = kQUICHTTP ;
242+ break ;
243+ case QCloudRaceTypeOnlyHTTP:
244+ raceType = kOnlyHTTP ;
245+ break ;
246+ }
247+ config.race_type = raceType;
248+ config.connect_timeout_millisec_ = [QCloudQuicConfig shareConfig ].connect_timeout_millisec_ ;
249+ // 设置连接空闲时间,单位为ms,默认值为与服务端协商值,一般为90000ms
250+ config.idle_timeout_millisec_ = [QCloudQuicConfig shareConfig ].idle_timeout_millisec_ ;
251+ config.is_custom_ = [QCloudQuicConfig shareConfig ].is_custom ;
214252 request_sp.reset (new TnetQuicRequest (tquic_delegate_sp.get (),config));
215253 tquic_delegate_sp.get ()->request_sp = request_sp;
216254 self.quicReqeust = quicRequest;
217- self. session = session;
255+
218256}
219257
220258// cancle request
@@ -226,7 +264,8 @@ -(void)cancleRequest{
226264// sent request
227265-(void )startRequest {
228266 NSLog (@" Tquic startRequest: %@ (%@ )" , self.quicReqeust.host, self.quicReqeust.ip);
229- request_sp.get ()->Connect ([self .quicReqeust.host UTF8String ] , [self .quicReqeust.ip UTF8String ], self.session .port , self.session .tcp_port );
267+ request_sp.get ()->Connect ([self .quicReqeust.host UTF8String ] , [self .quicReqeust.ip UTF8String ], [QCloudQuicConfig shareConfig ].port , [QCloudQuicConfig shareConfig ].tcp_port );
268+ // request_sp.get()->Connect([@"iacc.stgw.qq.com" UTF8String] , [@"101.89.15.244" UTF8String], [QCloudQuicConfig shareConfig].port, [QCloudQuicConfig shareConfig].tcp_port);
230269}
231270-(void )dealloc {
232271 NSLog (@" TquicConnection connect dealloc address = %@ " ,self);
0 commit comments