Infinity.AdoptedRequest

g GObject.Object GObject.Object Infinity.AdoptedRequest Infinity.AdoptedRequest GObject.Object->Infinity.AdoptedRequest

Subclasses:

None

Methods

Inherited:

GObject.Object (37)

Structs:

GObject.ObjectClass (5)

class

new_do (vector, user_id, operation, received)

class

new_redo (vector, user_id, received)

class

new_undo (vector, user_id, received)

affects_buffer ()

copy ()

fold (into, by)

get_execute_time ()

get_index ()

get_operation ()

get_receive_time ()

get_request_type ()

get_user_id ()

get_vector ()

mirror (by)

need_concurrency_id (against)

set_execute_time (time)

transform (against, request_lcs, against_lcs)

Virtual Methods

Inherited:

GObject.Object (7)

Properties

Name

Type

Flags

Short Description

executed

int

r/w

Time the request was executed, in microseconds

operation

Infinity.AdoptedOperation

r/w/co

The operation of the request

received

int

r/w/co

Time the request was received, in microseconds

type

Infinity.AdoptedRequestType

r/w/co

The type of the operation

user-id

int

r/w/co

The ID of the user that made the request

vector

Infinity.AdoptedStateVector

r/w/co

The vector time at which the request was made

Signals

Inherited:

GObject.Object (1)

Fields

Inherited:

GObject.Object (1)

Name

Type

Access

Description

parent

GObject.Object

r

priv

object

r

Class Details

class Infinity.AdoptedRequest(**kwargs)
Bases:

GObject.Object

Abstract:

No

Structure:

Infinity.AdoptedRequestClass

Infinity.AdoptedRequest is an opaque data type. You should only access it via the public API functions.

classmethod new_do(vector, user_id, operation, received)
Parameters:
  • vector (Infinity.AdoptedStateVector) – The vector time at which the request was made.

  • user_id (int) – The ID of the user that made the request.

  • operation (Infinity.AdoptedOperation) – The operation the user performed.

  • received (int) – Time the request was received, in microseconds since the epoch.

Returns:

A new DO request.

Return type:

Infinity.AdoptedRequest

Creates a new Infinity.AdoptedRequest with type Infinity.AdoptedRequestType.DO.

classmethod new_redo(vector, user_id, received)
Parameters:
  • vector (Infinity.AdoptedStateVector) – The vector time at which the request was made.

  • user_id (int) – The ID of the user that made the request.

  • received (int) – Time the request was received, in microseconds since the epoch.

Returns:

A new REDO request.

Return type:

Infinity.AdoptedRequest

Creates a new Infinity.AdoptedRequest with type Infinity.AdoptedRequestType.REDO. The operation performed is implicitely defined by reverting the operation of the associated UNDO request, but must still be computed by Infinity.AdoptedAlgorithm.

classmethod new_undo(vector, user_id, received)
Parameters:
  • vector (Infinity.AdoptedStateVector) – The vector time at which the request was made.

  • user_id (int) – The ID of the user that made the request.

  • received (int) – Time the request was received, in microseconds since the epoch.

Returns:

A new UNDO request.

Return type:

Infinity.AdoptedRequest

Creates a new Infinity.AdoptedRequest with type Infinity.AdoptedRequestType.UNDO. The operation performed is implicitely defined by reverting the operation of the associated DO or REDO request, but must still be computed by Infinity.AdoptedAlgorithm.

affects_buffer()
Returns:

Whether self affects the session’s buffer.

Return type:

bool

Returns whether this request, when applied, changes the content of the buffer. If this is a Infinity.AdoptedRequestType.UNDO or Infinity.AdoptedRequestType.REDO request, than it always affects the buffer, because only requests that affect the buffer can be undone or redone. If it is a Infinity.AdoptedRequestType.DO request, than it returns whether its operation has the Infinity.AdoptedOperationFlags.AFFECTS_BUFFER flag set.

copy()
Returns:

A new Infinity.AdoptedRequest.

Return type:

Infinity.AdoptedRequest

Creates a copy of self with an initial reference count of 1.

fold(into, by)
Parameters:
  • into (int) – The direction into which to fold.

  • by (int) – The number of operations between the original and the fold request.

Returns:

The folded request as a new Infinity.AdoptedRequest.

Return type:

Infinity.AdoptedRequest

Folds self as described in “Reducing the Problems of Group Undo” by Matthias Ressel and Rul Gunzenhäuser (http://portal.acm.org/citation.cfm?doid=320297.320312).

Note that by is the total amount of requests between the original and the fold request, and thus equivalent to 2j in the paper’s definition.

into must not be the same user as the one that issued self.

get_execute_time()
Returns:

The time when the function was executed, or 0.

Return type:

int

Returns the time when the request was executed by an Infinity.AdoptedAlgorithm, see Infinity.AdoptedAlgorithm.execute_request(). The time is given in microseconds since January 1, 1970. If the request was not yet executed, the function returns 0.

get_index()
Returns:

The vector time component of the request’s own user.

Return type:

int

Returns the vector time component of the request’s own users. This corresponds to the request index by that user.

get_operation()
Returns:

The request’s operation.

Return type:

Infinity.AdoptedOperation

Returns the operation carried by the request. This can only be called if the request’s type is Infinity.AdoptedRequestType.DO.

get_receive_time()
Returns:

Time when the request was received.

Return type:

int

Returns the time when the request was received, or, if it’s a local request, generated. The time is given in microseconds since January 1, 1970.

get_request_type()
Returns:

The type of self.

Return type:

Infinity.AdoptedRequestType

Returns the request type of self.

get_user_id()
Returns:

The request’s user ID.

Return type:

int

Returns the user ID of the user that issued self.

get_vector()
Returns:

The state vector of self. The returned value should not be freed, it is owned by the Infinity.AdoptedRequest.

Return type:

Infinity.AdoptedStateVector

Returns the vector time the request was made i.e. its operation can be applied to the buffer.

mirror(by)
Parameters:

by (int) – The number of requests between the original and the mirrored operation.

Returns:

The mirrored request as a new Infinity.AdoptedRequest.

Return type:

Infinity.AdoptedRequest

Mirrors self as described in “Reducing the Problems of Group Undo” by Matthias Ressel and Rul Gunzenhäuser (http://portal.acm.org/citation.cfm?doid=320297.320312).

Note that by is the total amount of requests between the original and mirrored request, and thus equivalent to 2j-1 in the paper’s definition.

self must be of type Infinity.AdoptedRequestType.DO and its operation must be reversible.

need_concurrency_id(against)
Parameters:

against (Infinity.AdoptedRequest) – The request to transform against.

Returns:

Whether transformation of self against against requires a concurrency ID.

Return type:

bool

Returns whether transforming self against against requires a concurrency ID. If this function returns True, you must provide the request_lcs and against_lcs parameters when calling Infinity.AdoptedRequest.transform().

Both request need to be of type Infinity.AdoptedRequestType.DO, and their state vectors must be the same.

set_execute_time(time)
Parameters:

time (int) – A time in microseconds since January 1, 1970.

Sets the time when self was executed. Usually this is called by Infinity.AdoptedAlgorithm when it executes a request, i.e. translates it to the current state of the document.

transform(against, request_lcs, against_lcs)
Parameters:
Returns:

A new Infinity.AdoptedRequest, the result of the transformation.

Return type:

Infinity.AdoptedRequest

Transforms the operation of self against the operation of against. Both requests must be of type Infinity.AdoptedRequestType.DO, and their state vectors must be the same.

If the function Infinity.AdoptedRequest.need_concurrency_id() returns True, request_lcs and against_lcs must not be None.

Property Details

Infinity.AdoptedRequest.props.executed
Name:

executed

Type:

int

Default Value:

0

Flags:

READABLE, WRITABLE

Time the request was executed, in microseconds

Infinity.AdoptedRequest.props.operation
Name:

operation

Type:

Infinity.AdoptedOperation

Default Value:

None

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The operation of the request

Infinity.AdoptedRequest.props.received
Name:

received

Type:

int

Default Value:

0

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

Time the request was received, in microseconds

Infinity.AdoptedRequest.props.type
Name:

type

Type:

Infinity.AdoptedRequestType

Default Value:

Infinity.AdoptedRequestType.DO

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The type of the operation

Infinity.AdoptedRequest.props.user_id
Name:

user-id

Type:

int

Default Value:

0

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The ID of the user that made the request

Infinity.AdoptedRequest.props.vector
Name:

vector

Type:

Infinity.AdoptedStateVector

Default Value:

None

Flags:

READABLE, WRITABLE, CONSTRUCT_ONLY

The vector time at which the request was made