 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FinishOnePhaseCommit ¶
func FinishOnePhaseCommit(errp *error, cm OnePhaseCommitProtocol, tx context.Context)
Example ¶
package main
import (
	"context"
	"go.llib.dev/frameless/port/comproto"
)
func main() {
	var cm comproto.OnePhaseCommitProtocol
	myMethod := func(ctx context.Context) (returnError error) {
		tx, err := cm.BeginTx(ctx)
		if err != nil {
			return err
		}
		defer comproto.FinishOnePhaseCommit(&returnError, cm, tx)
		// do something with in comproto
		return nil
	}
	_ = myMethod
}
func FinishTx ¶
Example ¶
package main
import (
	"context"
	"database/sql"
	"go.llib.dev/frameless/port/comproto"
)
func main() {
	db, err := sql.Open(`fake`, `DSN`)
	if err != nil {
		panic(err)
	}
	myMethod := func(ctx context.Context) (returnError error) {
		tx, err := db.Begin()
		if err != nil {
			return err
		}
		defer comproto.FinishTx(&returnError, tx.Commit, tx.Rollback)
		// do something with in comproto
		return nil
	}
	_ = myMethod
}
Types ¶
type OnePhaseCommitProtocol ¶
type OnePhaseCommitProtocol interface {
	// BeginTx creates a context with a transaction.
	// All statements that receive this context should be executed within the given transaction in the context.
	// After a BeginTx command will be executed in a single transaction until an explicit COMMIT or ROLLBACK is given.
	//
	// In case the resource support some form of isolation level,
	// or other ACID related property of the transaction,
	// then it is advised to prepare this information in the context before calling BeginTx.
	// e.g.:
	//   ...
	//   var err error
	//   ctx = r.ContextWithIsolationLevel(ctx, sql.LevelSerializable)
	//   ctx, err = r.BeginTx(ctx)
	//
	BeginTx(context.Context) (context.Context, error)
	// CommitTx Commit commits the current transaction.
	// All changes made by the transaction become visible to others and are guaranteed to be durable if a crash occurs.
	CommitTx(context.Context) error
	// RollbackTx rolls back the current transaction and causes all the updates made by the transaction to be discarded.
	RollbackTx(context.Context) error
}
    type TwoPhaseCommitProtocol ¶
type TwoPhaseCommitProtocol interface {
	OnePhaseCommitProtocol
	// PrepareTx communicate with the resource that the current transaction is done and should be prepared for commit later.
	//
	// Prepare transaction is not intended for use in applications or interactive sessions.
	// Its purpose is to allow an external transaction manager to perform atomic global transactions across multiple databases or other transactional resources.
	// Unless you're writing a transaction manager, you probably shouldn't be using PrepareTx.
	//
	// This command must be used on a context made with BeginTx.
	// Calling CommitTx or RollbackTx with the received context
	// must be interpreted as Two Phase Commit Protocol's Commit or Rollback action.
	PrepareTx(context.Context) (context.Context, error)
}
     Click to show internal directories. 
   Click to hide internal directories.