google_cloud_logging_v2/
stub.rs

1// Copyright 2025 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Code generated by sidekick. DO NOT EDIT.
16
17//! Traits to mock the clients in this library.
18//!
19//! Application developers may need to mock the clients in this library to test
20//! how their application works with different (and sometimes hard to trigger)
21//! client and service behavior. Such test can define mocks implementing the
22//! trait(s) defined in this module, initialize the client with an instance of
23//! this mock in their tests, and verify their application responds as expected.
24
25#![allow(rustdoc::broken_intra_doc_links)]
26
27pub(crate) mod dynamic;
28
29/// Defines the trait used to implement [super::client::LoggingServiceV2].
30///
31/// Application developers may need to implement this trait to mock
32/// `client::LoggingServiceV2`.  In other use-cases, application developers only
33/// use `client::LoggingServiceV2` and need not be concerned with this trait or
34/// its implementations.
35///
36/// Services gain new RPCs routinely. Consequently, this trait gains new methods
37/// too. To avoid breaking applications the trait provides a default
38/// implementation of each method. Most of these implementations just return an
39/// error.
40pub trait LoggingServiceV2: std::fmt::Debug + Send + Sync {
41    /// Implements [super::client::LoggingServiceV2::delete_log].
42    fn delete_log(
43        &self,
44        _req: crate::model::DeleteLogRequest,
45        _options: gax::options::RequestOptions,
46    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
47        gaxi::unimplemented::unimplemented_stub()
48    }
49
50    /// Implements [super::client::LoggingServiceV2::write_log_entries].
51    fn write_log_entries(
52        &self,
53        _req: crate::model::WriteLogEntriesRequest,
54        _options: gax::options::RequestOptions,
55    ) -> impl std::future::Future<
56        Output = crate::Result<gax::response::Response<crate::model::WriteLogEntriesResponse>>,
57    > + Send {
58        gaxi::unimplemented::unimplemented_stub()
59    }
60
61    /// Implements [super::client::LoggingServiceV2::list_log_entries].
62    fn list_log_entries(
63        &self,
64        _req: crate::model::ListLogEntriesRequest,
65        _options: gax::options::RequestOptions,
66    ) -> impl std::future::Future<
67        Output = crate::Result<gax::response::Response<crate::model::ListLogEntriesResponse>>,
68    > + Send {
69        gaxi::unimplemented::unimplemented_stub()
70    }
71
72    /// Implements [super::client::LoggingServiceV2::list_monitored_resource_descriptors].
73    fn list_monitored_resource_descriptors(
74        &self,
75        _req: crate::model::ListMonitoredResourceDescriptorsRequest,
76        _options: gax::options::RequestOptions,
77    ) -> impl std::future::Future<
78        Output = crate::Result<
79            gax::response::Response<crate::model::ListMonitoredResourceDescriptorsResponse>,
80        >,
81    > + Send {
82        gaxi::unimplemented::unimplemented_stub()
83    }
84
85    /// Implements [super::client::LoggingServiceV2::list_logs].
86    fn list_logs(
87        &self,
88        _req: crate::model::ListLogsRequest,
89        _options: gax::options::RequestOptions,
90    ) -> impl std::future::Future<
91        Output = crate::Result<gax::response::Response<crate::model::ListLogsResponse>>,
92    > + Send {
93        gaxi::unimplemented::unimplemented_stub()
94    }
95
96    /// Implements [super::client::LoggingServiceV2::list_operations].
97    fn list_operations(
98        &self,
99        _req: longrunning::model::ListOperationsRequest,
100        _options: gax::options::RequestOptions,
101    ) -> impl std::future::Future<
102        Output = crate::Result<gax::response::Response<longrunning::model::ListOperationsResponse>>,
103    > + Send {
104        gaxi::unimplemented::unimplemented_stub()
105    }
106
107    /// Implements [super::client::LoggingServiceV2::get_operation].
108    fn get_operation(
109        &self,
110        _req: longrunning::model::GetOperationRequest,
111        _options: gax::options::RequestOptions,
112    ) -> impl std::future::Future<
113        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
114    > + Send {
115        gaxi::unimplemented::unimplemented_stub()
116    }
117
118    /// Implements [super::client::LoggingServiceV2::cancel_operation].
119    fn cancel_operation(
120        &self,
121        _req: longrunning::model::CancelOperationRequest,
122        _options: gax::options::RequestOptions,
123    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
124        gaxi::unimplemented::unimplemented_stub()
125    }
126}
127
128/// Defines the trait used to implement [super::client::ConfigServiceV2].
129///
130/// Application developers may need to implement this trait to mock
131/// `client::ConfigServiceV2`.  In other use-cases, application developers only
132/// use `client::ConfigServiceV2` and need not be concerned with this trait or
133/// its implementations.
134///
135/// Services gain new RPCs routinely. Consequently, this trait gains new methods
136/// too. To avoid breaking applications the trait provides a default
137/// implementation of each method. Most of these implementations just return an
138/// error.
139pub trait ConfigServiceV2: std::fmt::Debug + Send + Sync {
140    /// Implements [super::client::ConfigServiceV2::list_buckets].
141    fn list_buckets(
142        &self,
143        _req: crate::model::ListBucketsRequest,
144        _options: gax::options::RequestOptions,
145    ) -> impl std::future::Future<
146        Output = crate::Result<gax::response::Response<crate::model::ListBucketsResponse>>,
147    > + Send {
148        gaxi::unimplemented::unimplemented_stub()
149    }
150
151    /// Implements [super::client::ConfigServiceV2::get_bucket].
152    fn get_bucket(
153        &self,
154        _req: crate::model::GetBucketRequest,
155        _options: gax::options::RequestOptions,
156    ) -> impl std::future::Future<
157        Output = crate::Result<gax::response::Response<crate::model::LogBucket>>,
158    > + Send {
159        gaxi::unimplemented::unimplemented_stub()
160    }
161
162    /// Implements [super::client::ConfigServiceV2::create_bucket_async].
163    fn create_bucket_async(
164        &self,
165        _req: crate::model::CreateBucketRequest,
166        _options: gax::options::RequestOptions,
167    ) -> impl std::future::Future<
168        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
169    > + Send {
170        gaxi::unimplemented::unimplemented_stub()
171    }
172
173    /// Implements [super::client::ConfigServiceV2::update_bucket_async].
174    fn update_bucket_async(
175        &self,
176        _req: crate::model::UpdateBucketRequest,
177        _options: gax::options::RequestOptions,
178    ) -> impl std::future::Future<
179        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
180    > + Send {
181        gaxi::unimplemented::unimplemented_stub()
182    }
183
184    /// Implements [super::client::ConfigServiceV2::create_bucket].
185    fn create_bucket(
186        &self,
187        _req: crate::model::CreateBucketRequest,
188        _options: gax::options::RequestOptions,
189    ) -> impl std::future::Future<
190        Output = crate::Result<gax::response::Response<crate::model::LogBucket>>,
191    > + Send {
192        gaxi::unimplemented::unimplemented_stub()
193    }
194
195    /// Implements [super::client::ConfigServiceV2::update_bucket].
196    fn update_bucket(
197        &self,
198        _req: crate::model::UpdateBucketRequest,
199        _options: gax::options::RequestOptions,
200    ) -> impl std::future::Future<
201        Output = crate::Result<gax::response::Response<crate::model::LogBucket>>,
202    > + Send {
203        gaxi::unimplemented::unimplemented_stub()
204    }
205
206    /// Implements [super::client::ConfigServiceV2::delete_bucket].
207    fn delete_bucket(
208        &self,
209        _req: crate::model::DeleteBucketRequest,
210        _options: gax::options::RequestOptions,
211    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
212        gaxi::unimplemented::unimplemented_stub()
213    }
214
215    /// Implements [super::client::ConfigServiceV2::undelete_bucket].
216    fn undelete_bucket(
217        &self,
218        _req: crate::model::UndeleteBucketRequest,
219        _options: gax::options::RequestOptions,
220    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
221        gaxi::unimplemented::unimplemented_stub()
222    }
223
224    /// Implements [super::client::ConfigServiceV2::list_views].
225    fn list_views(
226        &self,
227        _req: crate::model::ListViewsRequest,
228        _options: gax::options::RequestOptions,
229    ) -> impl std::future::Future<
230        Output = crate::Result<gax::response::Response<crate::model::ListViewsResponse>>,
231    > + Send {
232        gaxi::unimplemented::unimplemented_stub()
233    }
234
235    /// Implements [super::client::ConfigServiceV2::get_view].
236    fn get_view(
237        &self,
238        _req: crate::model::GetViewRequest,
239        _options: gax::options::RequestOptions,
240    ) -> impl std::future::Future<
241        Output = crate::Result<gax::response::Response<crate::model::LogView>>,
242    > + Send {
243        gaxi::unimplemented::unimplemented_stub()
244    }
245
246    /// Implements [super::client::ConfigServiceV2::create_view].
247    fn create_view(
248        &self,
249        _req: crate::model::CreateViewRequest,
250        _options: gax::options::RequestOptions,
251    ) -> impl std::future::Future<
252        Output = crate::Result<gax::response::Response<crate::model::LogView>>,
253    > + Send {
254        gaxi::unimplemented::unimplemented_stub()
255    }
256
257    /// Implements [super::client::ConfigServiceV2::update_view].
258    fn update_view(
259        &self,
260        _req: crate::model::UpdateViewRequest,
261        _options: gax::options::RequestOptions,
262    ) -> impl std::future::Future<
263        Output = crate::Result<gax::response::Response<crate::model::LogView>>,
264    > + Send {
265        gaxi::unimplemented::unimplemented_stub()
266    }
267
268    /// Implements [super::client::ConfigServiceV2::delete_view].
269    fn delete_view(
270        &self,
271        _req: crate::model::DeleteViewRequest,
272        _options: gax::options::RequestOptions,
273    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
274        gaxi::unimplemented::unimplemented_stub()
275    }
276
277    /// Implements [super::client::ConfigServiceV2::list_sinks].
278    fn list_sinks(
279        &self,
280        _req: crate::model::ListSinksRequest,
281        _options: gax::options::RequestOptions,
282    ) -> impl std::future::Future<
283        Output = crate::Result<gax::response::Response<crate::model::ListSinksResponse>>,
284    > + Send {
285        gaxi::unimplemented::unimplemented_stub()
286    }
287
288    /// Implements [super::client::ConfigServiceV2::get_sink].
289    fn get_sink(
290        &self,
291        _req: crate::model::GetSinkRequest,
292        _options: gax::options::RequestOptions,
293    ) -> impl std::future::Future<
294        Output = crate::Result<gax::response::Response<crate::model::LogSink>>,
295    > + Send {
296        gaxi::unimplemented::unimplemented_stub()
297    }
298
299    /// Implements [super::client::ConfigServiceV2::create_sink].
300    fn create_sink(
301        &self,
302        _req: crate::model::CreateSinkRequest,
303        _options: gax::options::RequestOptions,
304    ) -> impl std::future::Future<
305        Output = crate::Result<gax::response::Response<crate::model::LogSink>>,
306    > + Send {
307        gaxi::unimplemented::unimplemented_stub()
308    }
309
310    /// Implements [super::client::ConfigServiceV2::update_sink].
311    fn update_sink(
312        &self,
313        _req: crate::model::UpdateSinkRequest,
314        _options: gax::options::RequestOptions,
315    ) -> impl std::future::Future<
316        Output = crate::Result<gax::response::Response<crate::model::LogSink>>,
317    > + Send {
318        gaxi::unimplemented::unimplemented_stub()
319    }
320
321    /// Implements [super::client::ConfigServiceV2::delete_sink].
322    fn delete_sink(
323        &self,
324        _req: crate::model::DeleteSinkRequest,
325        _options: gax::options::RequestOptions,
326    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
327        gaxi::unimplemented::unimplemented_stub()
328    }
329
330    /// Implements [super::client::ConfigServiceV2::create_link].
331    fn create_link(
332        &self,
333        _req: crate::model::CreateLinkRequest,
334        _options: gax::options::RequestOptions,
335    ) -> impl std::future::Future<
336        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
337    > + Send {
338        gaxi::unimplemented::unimplemented_stub()
339    }
340
341    /// Implements [super::client::ConfigServiceV2::delete_link].
342    fn delete_link(
343        &self,
344        _req: crate::model::DeleteLinkRequest,
345        _options: gax::options::RequestOptions,
346    ) -> impl std::future::Future<
347        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
348    > + Send {
349        gaxi::unimplemented::unimplemented_stub()
350    }
351
352    /// Implements [super::client::ConfigServiceV2::list_links].
353    fn list_links(
354        &self,
355        _req: crate::model::ListLinksRequest,
356        _options: gax::options::RequestOptions,
357    ) -> impl std::future::Future<
358        Output = crate::Result<gax::response::Response<crate::model::ListLinksResponse>>,
359    > + Send {
360        gaxi::unimplemented::unimplemented_stub()
361    }
362
363    /// Implements [super::client::ConfigServiceV2::get_link].
364    fn get_link(
365        &self,
366        _req: crate::model::GetLinkRequest,
367        _options: gax::options::RequestOptions,
368    ) -> impl std::future::Future<
369        Output = crate::Result<gax::response::Response<crate::model::Link>>,
370    > + Send {
371        gaxi::unimplemented::unimplemented_stub()
372    }
373
374    /// Implements [super::client::ConfigServiceV2::list_exclusions].
375    fn list_exclusions(
376        &self,
377        _req: crate::model::ListExclusionsRequest,
378        _options: gax::options::RequestOptions,
379    ) -> impl std::future::Future<
380        Output = crate::Result<gax::response::Response<crate::model::ListExclusionsResponse>>,
381    > + Send {
382        gaxi::unimplemented::unimplemented_stub()
383    }
384
385    /// Implements [super::client::ConfigServiceV2::get_exclusion].
386    fn get_exclusion(
387        &self,
388        _req: crate::model::GetExclusionRequest,
389        _options: gax::options::RequestOptions,
390    ) -> impl std::future::Future<
391        Output = crate::Result<gax::response::Response<crate::model::LogExclusion>>,
392    > + Send {
393        gaxi::unimplemented::unimplemented_stub()
394    }
395
396    /// Implements [super::client::ConfigServiceV2::create_exclusion].
397    fn create_exclusion(
398        &self,
399        _req: crate::model::CreateExclusionRequest,
400        _options: gax::options::RequestOptions,
401    ) -> impl std::future::Future<
402        Output = crate::Result<gax::response::Response<crate::model::LogExclusion>>,
403    > + Send {
404        gaxi::unimplemented::unimplemented_stub()
405    }
406
407    /// Implements [super::client::ConfigServiceV2::update_exclusion].
408    fn update_exclusion(
409        &self,
410        _req: crate::model::UpdateExclusionRequest,
411        _options: gax::options::RequestOptions,
412    ) -> impl std::future::Future<
413        Output = crate::Result<gax::response::Response<crate::model::LogExclusion>>,
414    > + Send {
415        gaxi::unimplemented::unimplemented_stub()
416    }
417
418    /// Implements [super::client::ConfigServiceV2::delete_exclusion].
419    fn delete_exclusion(
420        &self,
421        _req: crate::model::DeleteExclusionRequest,
422        _options: gax::options::RequestOptions,
423    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
424        gaxi::unimplemented::unimplemented_stub()
425    }
426
427    /// Implements [super::client::ConfigServiceV2::get_cmek_settings].
428    fn get_cmek_settings(
429        &self,
430        _req: crate::model::GetCmekSettingsRequest,
431        _options: gax::options::RequestOptions,
432    ) -> impl std::future::Future<
433        Output = crate::Result<gax::response::Response<crate::model::CmekSettings>>,
434    > + Send {
435        gaxi::unimplemented::unimplemented_stub()
436    }
437
438    /// Implements [super::client::ConfigServiceV2::update_cmek_settings].
439    fn update_cmek_settings(
440        &self,
441        _req: crate::model::UpdateCmekSettingsRequest,
442        _options: gax::options::RequestOptions,
443    ) -> impl std::future::Future<
444        Output = crate::Result<gax::response::Response<crate::model::CmekSettings>>,
445    > + Send {
446        gaxi::unimplemented::unimplemented_stub()
447    }
448
449    /// Implements [super::client::ConfigServiceV2::get_settings].
450    fn get_settings(
451        &self,
452        _req: crate::model::GetSettingsRequest,
453        _options: gax::options::RequestOptions,
454    ) -> impl std::future::Future<
455        Output = crate::Result<gax::response::Response<crate::model::Settings>>,
456    > + Send {
457        gaxi::unimplemented::unimplemented_stub()
458    }
459
460    /// Implements [super::client::ConfigServiceV2::update_settings].
461    fn update_settings(
462        &self,
463        _req: crate::model::UpdateSettingsRequest,
464        _options: gax::options::RequestOptions,
465    ) -> impl std::future::Future<
466        Output = crate::Result<gax::response::Response<crate::model::Settings>>,
467    > + Send {
468        gaxi::unimplemented::unimplemented_stub()
469    }
470
471    /// Implements [super::client::ConfigServiceV2::copy_log_entries].
472    fn copy_log_entries(
473        &self,
474        _req: crate::model::CopyLogEntriesRequest,
475        _options: gax::options::RequestOptions,
476    ) -> impl std::future::Future<
477        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
478    > + Send {
479        gaxi::unimplemented::unimplemented_stub()
480    }
481
482    /// Implements [super::client::ConfigServiceV2::list_operations].
483    fn list_operations(
484        &self,
485        _req: longrunning::model::ListOperationsRequest,
486        _options: gax::options::RequestOptions,
487    ) -> impl std::future::Future<
488        Output = crate::Result<gax::response::Response<longrunning::model::ListOperationsResponse>>,
489    > + Send {
490        gaxi::unimplemented::unimplemented_stub()
491    }
492
493    /// Implements [super::client::ConfigServiceV2::get_operation].
494    fn get_operation(
495        &self,
496        _req: longrunning::model::GetOperationRequest,
497        _options: gax::options::RequestOptions,
498    ) -> impl std::future::Future<
499        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
500    > + Send {
501        gaxi::unimplemented::unimplemented_stub()
502    }
503
504    /// Implements [super::client::ConfigServiceV2::cancel_operation].
505    fn cancel_operation(
506        &self,
507        _req: longrunning::model::CancelOperationRequest,
508        _options: gax::options::RequestOptions,
509    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
510        gaxi::unimplemented::unimplemented_stub()
511    }
512
513    /// Returns the polling error policy.
514    ///
515    /// When mocking, this method is typically irrelevant. Do not try to verify
516    /// it is called by your mocks.
517    fn get_polling_error_policy(
518        &self,
519        _options: &gax::options::RequestOptions,
520    ) -> std::sync::Arc<dyn gax::polling_error_policy::PollingErrorPolicy> {
521        std::sync::Arc::new(gax::polling_error_policy::Aip194Strict)
522    }
523
524    /// Returns the polling backoff policy.
525    ///
526    /// When mocking, this method is typically irrelevant. Do not try to verify
527    /// it is called by your mocks.
528    fn get_polling_backoff_policy(
529        &self,
530        _options: &gax::options::RequestOptions,
531    ) -> std::sync::Arc<dyn gax::polling_backoff_policy::PollingBackoffPolicy> {
532        std::sync::Arc::new(gax::exponential_backoff::ExponentialBackoff::default())
533    }
534}
535
536/// Defines the trait used to implement [super::client::MetricsServiceV2].
537///
538/// Application developers may need to implement this trait to mock
539/// `client::MetricsServiceV2`.  In other use-cases, application developers only
540/// use `client::MetricsServiceV2` and need not be concerned with this trait or
541/// its implementations.
542///
543/// Services gain new RPCs routinely. Consequently, this trait gains new methods
544/// too. To avoid breaking applications the trait provides a default
545/// implementation of each method. Most of these implementations just return an
546/// error.
547pub trait MetricsServiceV2: std::fmt::Debug + Send + Sync {
548    /// Implements [super::client::MetricsServiceV2::list_log_metrics].
549    fn list_log_metrics(
550        &self,
551        _req: crate::model::ListLogMetricsRequest,
552        _options: gax::options::RequestOptions,
553    ) -> impl std::future::Future<
554        Output = crate::Result<gax::response::Response<crate::model::ListLogMetricsResponse>>,
555    > + Send {
556        gaxi::unimplemented::unimplemented_stub()
557    }
558
559    /// Implements [super::client::MetricsServiceV2::get_log_metric].
560    fn get_log_metric(
561        &self,
562        _req: crate::model::GetLogMetricRequest,
563        _options: gax::options::RequestOptions,
564    ) -> impl std::future::Future<
565        Output = crate::Result<gax::response::Response<crate::model::LogMetric>>,
566    > + Send {
567        gaxi::unimplemented::unimplemented_stub()
568    }
569
570    /// Implements [super::client::MetricsServiceV2::create_log_metric].
571    fn create_log_metric(
572        &self,
573        _req: crate::model::CreateLogMetricRequest,
574        _options: gax::options::RequestOptions,
575    ) -> impl std::future::Future<
576        Output = crate::Result<gax::response::Response<crate::model::LogMetric>>,
577    > + Send {
578        gaxi::unimplemented::unimplemented_stub()
579    }
580
581    /// Implements [super::client::MetricsServiceV2::update_log_metric].
582    fn update_log_metric(
583        &self,
584        _req: crate::model::UpdateLogMetricRequest,
585        _options: gax::options::RequestOptions,
586    ) -> impl std::future::Future<
587        Output = crate::Result<gax::response::Response<crate::model::LogMetric>>,
588    > + Send {
589        gaxi::unimplemented::unimplemented_stub()
590    }
591
592    /// Implements [super::client::MetricsServiceV2::delete_log_metric].
593    fn delete_log_metric(
594        &self,
595        _req: crate::model::DeleteLogMetricRequest,
596        _options: gax::options::RequestOptions,
597    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
598        gaxi::unimplemented::unimplemented_stub()
599    }
600
601    /// Implements [super::client::MetricsServiceV2::list_operations].
602    fn list_operations(
603        &self,
604        _req: longrunning::model::ListOperationsRequest,
605        _options: gax::options::RequestOptions,
606    ) -> impl std::future::Future<
607        Output = crate::Result<gax::response::Response<longrunning::model::ListOperationsResponse>>,
608    > + Send {
609        gaxi::unimplemented::unimplemented_stub()
610    }
611
612    /// Implements [super::client::MetricsServiceV2::get_operation].
613    fn get_operation(
614        &self,
615        _req: longrunning::model::GetOperationRequest,
616        _options: gax::options::RequestOptions,
617    ) -> impl std::future::Future<
618        Output = crate::Result<gax::response::Response<longrunning::model::Operation>>,
619    > + Send {
620        gaxi::unimplemented::unimplemented_stub()
621    }
622
623    /// Implements [super::client::MetricsServiceV2::cancel_operation].
624    fn cancel_operation(
625        &self,
626        _req: longrunning::model::CancelOperationRequest,
627        _options: gax::options::RequestOptions,
628    ) -> impl std::future::Future<Output = crate::Result<gax::response::Response<()>>> + Send {
629        gaxi::unimplemented::unimplemented_stub()
630    }
631}