Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Postgres/src/bin/pg_rewind/   (Postgres Database Version 18.4©)  Datei vom 11.4.2026 mit Größe 2 kB image not shown  

Quelle  rewind_source.h

  Sprache: C
 

/*-------------------------------------------------------------------------
 *
 * rewind_source.h
 *   Abstraction for fetching from source server.
 *
 * The source server can be either a libpq connection to a live system,
 * or a local data directory. The 'rewind_source' struct abstracts the
 * operations to fetch data from the source system, so that the rest of
 * the code doesn't need to care what kind of a source its dealing with.
 *
 * Copyright (c) 2013-2025, PostgreSQL Global Development Group
 *
 *-------------------------------------------------------------------------
 */

#ifndef REWIND_SOURCE_H
#define REWIND_SOURCE_H

#include "access/xlogdefs.h"
#include "file_ops.h"
#include "filemap.h"
#include "libpq-fe.h"

typedef struct rewind_source
{
 /*
  * Traverse all files in the source data directory, and call 'callback' on
  * each file.
 */

 void  (*traverse_files) (struct rewind_source *,
           process_file_callback_t callback);

 /*
  * Fetch a single file into a malloc'd buffer. The file size is returned
  * in *filesize. The returned buffer is always zero-terminated, which is
  * handy for text files.
 */

 char    *(*fetch_file) (struct rewind_source *, const char *path,
          size_t *filesize);

 /*
  * Request to fetch (part of) a file in the source system, specified by an
  * offset and length, and write it to the same offset in the corresponding
  * target file. The source implementation may queue up the request and
  * execute it later when convenient. Call finish_fetch() to flush the
  * queue and execute all requests.
 */

 void  (*queue_fetch_range) (struct rewind_source *, const char *path,
           off_t offset, size_t len);

 /*
  * Like queue_fetch_range(), but requests replacing the whole local file
  * from the source system. 'len' is the expected length of the file,
  * although when the source is a live server, the file may change
  * concurrently. The implementation is not obliged to copy more than 'len'
  * bytes, even if the file is larger. However, to avoid copying a
  * truncated version of the file, which can cause trouble if e.g. a
  * configuration file is modified concurrently, the implementation should
  * try to copy the whole file, even if it's larger than expected.
 */

 void  (*queue_fetch_file) (struct rewind_source *, const char *path,
          size_t len);

 /*
  * Execute all requests queued up with queue_fetch_range().
 */

 void  (*finish_fetch) (struct rewind_source *);

 /*
  * Get the current WAL insert position in the source system.
 */

 XLogRecPtr (*get_current_wal_insert_lsn) (struct rewind_source *);

 /*
  * Free this rewind_source object.
 */

 void  (*destroy) (struct rewind_source *);

} rewind_source;

/* in libpq_source.c */
extern rewind_source *init_libpq_source(PGconn *conn);

/* in local_source.c */
extern rewind_source *init_local_source(const char *datadir);

#endif       /* REWIND_SOURCE_H */

Messung V0.5 in Prozent
C=94 H=97 G=95

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.