/*
 * Copyright (c) 2016, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.replication.fluent;

import org.postgresql.core.BaseConnection;
import org.postgresql.core.ReplicationProtocol;
import org.postgresql.replication.PGReplicationStream;
import org.postgresql.replication.fluent.logical.ChainedLogicalStreamBuilder;
import org.postgresql.replication.fluent.logical.LogicalReplicationOptions;
import org.postgresql.replication.fluent.logical.LogicalStreamBuilder;
import org.postgresql.replication.fluent.logical.StartLogicalReplicationCallback;
import org.postgresql.replication.fluent.physical.ChainedPhysicalStreamBuilder;
import org.postgresql.replication.fluent.physical.PhysicalReplicationOptions;
import org.postgresql.replication.fluent.physical.PhysicalStreamBuilder;
import org.postgresql.replication.fluent.physical.StartPhysicalReplicationCallback;

import java.sql.SQLException;

public class ReplicationStreamBuilder implements ChainedStreamBuilder {
  private final BaseConnection baseConnection;

  
Params:
  • connection – not null connection with that will be associate replication
/** * @param connection not null connection with that will be associate replication */
public ReplicationStreamBuilder(final BaseConnection connection) { this.baseConnection = connection; } @Override public ChainedLogicalStreamBuilder logical() { return new LogicalStreamBuilder(new StartLogicalReplicationCallback() { @Override public PGReplicationStream start(LogicalReplicationOptions options) throws SQLException { ReplicationProtocol protocol = baseConnection.getReplicationProtocol(); return protocol.startLogical(options); } }); } @Override public ChainedPhysicalStreamBuilder physical() { return new PhysicalStreamBuilder(new StartPhysicalReplicationCallback() { @Override public PGReplicationStream start(PhysicalReplicationOptions options) throws SQLException { ReplicationProtocol protocol = baseConnection.getReplicationProtocol(); return protocol.startPhysical(options); } }); } }