| 259 | } |
| 260 | |
| 261 | void TContextDistributor::SetContextData(int envId, int hostId, const IObjectBase* data, EKeepDataFlags keepContextRawData) { |
| 262 | CHROMIUM_TRACE_FUNCTION(); |
| 263 | bool keepRemoteRawData = keepContextRawData & (KEEP_CONTEXT_RAW_DATA & ~KEEP_CONTEXT_ON_MASTER); |
| 264 | { |
| 265 | TGuard<TMutex> g(Sync); |
| 266 | Y_ASSERT(EnvId2Info.find(envId) != EnvId2Info.end()); |
| 267 | TFullCtxInfo& dst = EnvId2Info[envId]; |
| 268 | TCtxDataPart& part = dst.Data[hostId]; |
| 269 | if (part.Version >= dst.MaxVersion) { |
| 270 | ++part.Version; |
| 271 | dst.MaxVersion = part.Version; |
| 272 | } else { |
| 273 | part.Version = dst.MaxVersion; |
| 274 | } |
| 275 | AssignData(&part, dst, data); |
| 276 | part.KeepRawData = keepRemoteRawData; |
| 277 | dst.ResetHostIdReady(hostId, part.GetPartCount()); |
| 278 | |
| 279 | DoSend(); |
| 280 | } |
| 281 | if (!keepRemoteRawData) { |
| 282 | DeleteContextRawData(envId, hostId, keepContextRawData & KEEP_CONTEXT_ON_MASTER); |
| 283 | } |
| 284 | } |
| 285 | |
| 286 | void TContextDistributor::SetContextData(int envId, const TVector<int>& compIds, const TVector<i64>& dataIds, EKeepDataFlags keepContextRawData) { |
| 287 | CHROMIUM_TRACE_FUNCTION(); |
no test coverage detected