void ReplicaManagerWrapper::GenerateActiveReplicas( std::wstring const & replicasDescription, __out size_t & replicaCount, __out std::vector<ReplicaInformation> & replicaInfos) { vector<wstring> replicas; StringUtility::Split<wstring>(replicasDescription, replicas, L";"); replicaCount = replicas.size(); for(size_t i = 0; i < replicaCount; ++i) { vector<wstring> replicaDetails; AddIncarnationIdIfNecessary(replicas[i]); StringUtility::Split<wstring>(replicas[i], replicaDetails, L":"); ReplicationEndpointId endpointUniqueId = ReplicationEndpointId::FromString(replicaDetails[0]); int64 lsn = Int64_Parse(replicaDetails[1]); wstring endpoint; transport_->GeneratePublishEndpoint(endpointUniqueId, endpoint); ReplicaInformation replica( endpointUniqueId.ReplicaId, ::FABRIC_REPLICA_ROLE_ACTIVE_SECONDARY, endpoint, false, lsn, lsn); replicaInfos.push_back(std::move(replica)); } }
void ReplicaManagerWrapper::AddIdles(wstring const & idleReplicas) { Trace.WriteInfo(TestReplicaManagerSource, "** AddIdles {0}", idleReplicas); ReplicaInformationVector idles; vector<wstring> replicas; StringUtility::Split<wstring>(idleReplicas, replicas, L";"); size_t replicaCount = replicas.size(); FABRIC_SEQUENCE_NUMBER replLSN; for(size_t i = 0; i < replicaCount; ++i) { vector<wstring> replicaDetails; AddIncarnationIdIfNecessary(replicas[i]); StringUtility::Split<wstring>(replicas[i], replicaDetails, L":"); ReplicationEndpointId endpointUniqueId = ReplicationEndpointId::FromString(replicaDetails[0]); wstring endpoint; transport_->GeneratePublishEndpoint(endpointUniqueId, endpoint); ReplicaInformation replica( endpointUniqueId.ReplicaId, ::FABRIC_REPLICA_ROLE_IDLE_SECONDARY, endpoint, false, -1, -1); ReplicationSessionSPtr session; ErrorCode error = replicaManagerSPtr_->TryAddIdleReplica(replica, session, replLSN); VERIFY_IS_TRUE_FMT(error.IsSuccess(), "Added idle \"{0}\"", endpointUniqueId); int64 lsn = Int64_Parse(replicaDetails[1]); session->UpdateAckProgress(lsn, lsn, L"empty", nullptr); for (int count = 1; count < 100; count++) { if (session->Test_IsReplicationAckProcessingInProgress()) { Sleep(100); } else { break; } } } }
static def(void, OnHeader, RdString name, RdString value) { callback(this->onHeader, name, value); String_ToLower((String *) &name); if (String_Equals(name, $("connection"))) { String_ToLower((String *) &value); if (String_Equals(value, $("close"))) { this->keepAlive = false; } else if (String_Equals(value, $("keep-alive"))) { this->keepAlive = true; } } else if (String_Equals(name, $("transfer-encoding"))) { if (String_Equals(value, $("chunked"))) { this->chunked = true; } } else if (String_Equals(name, $("content-length"))) { this->total = Int64_Parse(value); } }