コード例 #1
0
    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));
        }
    }
コード例 #2
0
    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;
                }
            }
        }
    }
コード例 #3
0
ファイル: Client.c プロジェクト: tindzk/Jivai
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);
	}
}