| 254 | } |
| 255 | |
| 256 | inline THandleRef Schedule(const TMessage& msg, IOnRecv* cb, TServiceStatRef& ss) { |
| 257 | TParsedLocation loc(msg.Addr); |
| 258 | TUdpAddress addr; |
| 259 | |
| 260 | const TResolvedHost* resHost = CachedResolve(TResolveInfo(loc.Host, loc.GetPort())); |
| 261 | GetUdpAddress(&addr, FindIP(&resHost->Addr)); |
| 262 | |
| 263 | TClientThread& clnt = *Clnt_[resHost->Id % Clnt_.size()]; |
| 264 | TIntrusivePtr<INetLibaRequester> rr = clnt.R_; |
| 265 | TRequestRef req(new TRequest(rr, resHost->Id, msg, cb, !ss ? nullptr : new TStatCollector(ss))); |
| 266 | |
| 267 | clnt.EH_->OnSend(req); |
| 268 | rr->SendRequest(addr, ToString(loc.Service), msg.Data, req->Guid()); |
| 269 | |
| 270 | return THandleRef(req.Get()); |
| 271 | } |
| 272 | |
| 273 | private: |
| 274 | TVector<TAutoPtr<TClientThread>> Clnt_; |
no test coverage detected