Untitled

 avatar
unknown
c_cpp
6 months ago
2.9 kB
2
Indexable
void Datacenter::serializeToStream(NativeByteBuffer *stream) {
    stream->writeInt32(configVersion);
    stream->writeInt32(datacenterId);
    stream->writeInt32(lastInitVersion);
    stream->writeInt32(lastInitMediaVersion);
    size_t size;
    for (int b = 0; b < 4; b++) {
        std::vector<TcpAddress> *array;
        switch (b) {
            case 0:
                array = &addressesIpv4;
                break;
            case 1:
                array = &addressesIpv6;
                break;
            case 2:
                array = &addressesIpv4Download;
                break;
            case 3:
                array = &addressesIpv6Download;
                break;
            default:
                array = nullptr;
                break;
        }
        if (array == nullptr) {
            continue;
        }
        stream->writeInt32((int32_t) (size = array->size()));
        for (uint32_t a = 0; a < size; a++) {
            stream->writeString((*array)[a].address);
            stream->writeInt32((*array)[a].port);
            stream->writeInt32((*array)[a].flags);
            stream->writeString((*array)[a].secret);
        }
    }
    stream->writeBool(isCdnDatacenter);
    if (authKeyPerm != nullptr) {
        stream->writeInt32(authKeyPerm->length);
        stream->writeBytes(authKeyPerm);
    } else {
        stream->writeInt32(0);
    }
    stream->writeInt64(authKeyPermId);
    if (authKeyTemp != nullptr) {
        stream->writeInt32(authKeyTemp->length);
        stream->writeBytes(authKeyTemp);
    } else {
        stream->writeInt32(0);
    }
    stream->writeInt64(authKeyTempId);
    if (authKeyMediaTemp != nullptr) {
        stream->writeInt32(authKeyMediaTemp->length);
        stream->writeBytes(authKeyMediaTemp);
    } else {
        stream->writeInt32(0);
    }
    stream->writeInt64(authKeyMediaTempId);
    stream->writeInt32(authorized ? 1 : 0);

    size = 0;
    for (uint32_t a = 0; a < serverSalts.size(); a++) {
        if (serverSalts[a] != nullptr) size++;
    }
    stream->writeInt32((int32_t) size);
    for (uint32_t a = 0; a < serverSalts.size(); a++) {
        if (serverSalts[a] == nullptr) continue;
        stream->writeInt32(serverSalts[a]->valid_since);
        stream->writeInt32(serverSalts[a]->valid_until);
        stream->writeInt64(serverSalts[a]->salt);
    }

    size = 0;
    for (uint32_t a = 0; a < mediaServerSalts.size(); a++) {
        if (mediaServerSalts[a] != nullptr) size++;
    }
    stream->writeInt32((int32_t) size);
    for (uint32_t a = 0; a < mediaServerSalts.size(); a++) {
        if (mediaServerSalts[a] == nullptr) continue;
        stream->writeInt32(mediaServerSalts[a]->valid_since);
        stream->writeInt32(mediaServerSalts[a]->valid_until);
        stream->writeInt64(mediaServerSalts[a]->salt);
    }
}
Editor is loading...
Leave a Comment