diff --git a/doc/11-如何设置换源链接与测速链接.md b/doc/11-如何设置换源链接与测速链接.md index f50ef68..7cd1838 100644 --- a/doc/11-如何设置换源链接与测速链接.md +++ b/doc/11-如何设置换源链接与测速链接.md @@ -7,7 +7,7 @@ ! Contributors : Nul None ! | ! Created On : <2025-08-11> - ! Last Modified : <2025-08-11> + ! Last Modified : <2026-01-21> ! ---------------------------------------------------------- --> # 新增/修改 "换源链接" @@ -24,6 +24,11 @@ def_sources_begin() {&Tencent, "https://mirrors.cloud.tencent.com/npm/", FeedByPrelude}, {&某新镜像站, "某镜像站提供的换源链接", FeedByPrelude} def_sources_end() + +// + +// 调整上述某一个镜像站的所提供源的 "换源链接" +chef_set_source_url (this, &UpstreamProvider, "新的换源链接"); ```
@@ -51,13 +56,17 @@ def_sources_begin() {&Tencent, "https://mirrors.cloud.tencent.com/npm/", FeedByPrelude}, def_sources_end() +// + +// 调整/设置上述某一个镜像站的所提供源的 "精准测速链接" +chef_set_source_smurl (this, &UpstreamProvider, "新的测速链接") // 把所有上述源的 "测速链接" 设置为 "换源链接" + postfix chef_set_sources_speed_measure_url_with_postfix (this, "/dir/BigFile.tar.gz"); // 基于 "换源链接" 做更自定义的操作 chef_set_sources_speed_measure_url_with_func (this, func, data); // 调整某一个镜像站(Provider)的 "测速链接" -chef_set_provider_speed_measure_url (&Tencent, "https://mirrors.cloud.tencent.com/npm/BigFile.tar.gz") +chef_set_provider_speed_measure_url (&Tencent, "https://mirrors.cloud.tencent.com/npm/BigFile.tar.gz"); // 调整某一个镜像站(Provider)的 "测速精度" -chef_set_provider_speed_measure_accuracy (&UpstreamProvider, ROUGH);; +chef_set_provider_speed_measure_accuracy (&UpstreamProvider, ROUGH); ``` diff --git a/src/framework/chef.c b/src/framework/chef.c index cbee5c0..c79e272 100644 --- a/src/framework/chef.c +++ b/src/framework/chef.c @@ -164,6 +164,10 @@ chef_set_sources_speed_measure_url_with_postfix (Target_t *target, char *postfix void chef_set_source_url (Target_t *target, SourceProvider_t *provider, char *url) { + xy_cant_be_null (target); + xy_cant_be_null (provider); + xy_cant_be_null (url); + for (int i=0; i < target->sources_n; i++) { Source_t *src = &target->sources[i]; @@ -178,6 +182,32 @@ chef_set_source_url (Target_t *target, SourceProvider_t *provider, char *url) xy_unreached(); } +/** + * 设置 或 修改 某个镜像站的 *精准*测速链接 + * + * sm = speed measure + */ +void +chef_set_source_smurl (Target_t *target, SourceProvider_t *provider, char *url) +{ + xy_cant_be_null (target); + xy_cant_be_null (provider); + xy_cant_be_null (url); + + for (int i=0; i < target->sources_n; i++) + { + Source_t *src = &target->sources[i]; + SourceProvider_t *p = src->provider; + if (p == provider) + { + src->speed_measure_url = xy_strdup (url); + return; + } + } + + xy_unreached(); +} + /** * @note 用于: 组中的 item target 在 standalone 模式时正确填充源信息 diff --git a/src/framework/struct.h b/src/framework/struct.h index ffd0a56..e2553c7 100644 --- a/src/framework/struct.h +++ b/src/framework/struct.h @@ -181,7 +181,7 @@ Target_t; * def_sources_end() * * 若是出于代码美观考虑,上述第三列可以写 FeedByPrelude,然后下面调用函数来填充: - * chef_set_source_speed_measure_url() + * chef_set_source_smurl() * chef_set_sources_speed_measure_url_with_postfix() * chef_set_sources_speed_measure_url_with_func() */