aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/data/transactionid.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/data/transactionid.js')
-rwxr-xr-xnode_modules/montage/data/transactionid.js230
1 files changed, 0 insertions, 230 deletions
diff --git a/node_modules/montage/data/transactionid.js b/node_modules/montage/data/transactionid.js
deleted file mode 100755
index 330dc6c4..00000000
--- a/node_modules/montage/data/transactionid.js
+++ /dev/null
@@ -1,230 +0,0 @@
1/* <copyright>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */
6/**
7 @module montage/data/transactionid
8 @requires montage/core/core
9 @requires montage/core/uuid
10 @requires montage/core/logger
11*/
12var Montage = require("montage").Montage;
13var Uuid = require("core/uuid").Uuid;
14var logger = require("core/logger").logger("transactionid");
15/**
16 Description TODO
17 @private
18*/
19var _lastTimestamp = Date.now();
20/**
21 Description TODO
22 @private
23*/
24var _lastNanos = 1;
25/**
26 Description TODO
27 @private
28*/
29var _transactionManagerInstance = null;
30/**
31 @class module:montage/data/transactionid.TransactionId
32 @extends module:montage/core/core.Montage
33*/
34var TransactionId = exports.TransactionId = Montage.create(Montage,/** @lends module:montage/data/transactionid.TransactionId# */ {
35/**
36 This is used to guarantee unicity.
37 @private
38*/
39 _uuid: {
40 serializable: true,
41 enumerable: false,
42 value: null
43 },
44/**
45 This is used to order transactions.
46 @private
47*/
48 _timestamp: {
49 serializable: true,
50 enumerable: false,
51 value: null
52 },
53/**
54 This is used to order transactions.
55 @private
56*/
57 _nanos: {
58 serializable: true,
59 enumerable: false,
60 value: null
61 },
62/**
63 Description TODO
64 @function
65 @returns itself
66 */
67 init: {
68 serializable: false,
69 enumerable: false,
70 value: function() {
71 this._uuid = Uuid.generate();
72 var timestamp = Date.now();
73 if (_lastTimestamp === timestamp) {
74 _lastNanos = _lastNanos + 1;
75 } else {
76 _lastTimestamp = timestamp;
77 _lastNanos = 1
78 }
79 this._timestamp = _lastTimestamp;
80 this._nanos = _lastNanos;
81 if (logger.isDebug) {
82 logger.debug(this, "New Transaction ID: " + this._timestamp);
83 }
84 return this;
85 }
86 },
87
88/**
89 Factory method used to create new Transaction IDs.<br>
90 This factory supports a delegate so that application requiring subclassing can do so easily.<br>
91 The factory delegate should implement <code>createTransactionId</code> method.
92 @function
93 @returns TransactionId.create().init() A newly initialized transaction ID.
94 */
95 factory: {
96 value: function() {
97 if (this.factory.delegate && typeof this.factory.delegate.createTransactionId === "function") {
98 return this.factory.delegate.createTransactionId();
99 } else {
100 return TransactionId.create().init();
101 }
102 }},
103
104/**
105 Description TODO
106 @function
107 @param {Property} transactionId For comparison purposes.
108 @returns {Boolean} true If transactionId is after the target transaction ID.
109 */
110 before: {
111 value: function(transactionId) {
112 if (this._timestamp === transactionId._timestamp) {
113 return this._nanos < transactionId._nanos;
114 }
115 return this._timestamp < transactionId._timestamp;
116
117 }},
118
119/**
120 Description TODO
121 @function
122 @param {Property} transactionId For comparison purposes.
123 @returns {Boolean} true If transactionId is before the target transaction ID.
124 */
125 after: {
126 value: function(transactionId) {
127 if (this._timestamp === transactionId._timestamp) {
128 return this._nanos > transactionId._nanos;
129 }
130 return this._timestamp > transactionId._timestamp;
131 }},
132
133/**
134 Returns the transaction manager.<br>
135 The transaction manager is a unique object in charge of openning and closing transactions.
136 @function
137 @returns transaction manager
138 */
139 manager: {
140 get: function() {
141 if (_transactionManagerInstance === null) {
142 _transactionManagerInstance = Object.freeze(TransactionManager.create().init());
143 }
144 return _transactionManagerInstance;
145 }
146 }
147
148
149});
150/**
151 @class module:montage/data/transactionid.TransactionManager
152*/
153var TransactionManager = exports.TransactionManager = Montage.create(Montage,/** @lends module:montage/data/transactionid.TransactionManager# */ {
154
155 /**
156 Enables the trace of creation starts.<br>
157 When enabled, the transaction ID will memorize the state of the thread stack when created.
158 @type {Property} Function
159 @default {Boolean} false
160 */
161 traceTransactionStart: {
162 serializable: false,
163 enumerable: false,
164 value: false
165 },
166
167/**
168 Description TODO
169 @function
170 @returns itself
171 */
172 init: {
173 serializable: false,
174 enumerable: false,
175 value: function() {
176 return this;
177 }
178 },
179
180 /**
181 Opens a new transaction ID for this thread.
182 @function
183 @returns null or new transaction ID
184 @throws IllegalStateException if a transaction is already open for this thread.
185 */
186 startTransaction: { value: function() {
187 return null;
188 }},
189
190 /**
191 Returns the current transaction ID for this thread.
192 @function
193 @returns null or current transaction ID
194 */
195 currentTransaction: { value: function() {
196 return null;
197 }},
198
199/**
200 Checks if the current thread has an open transaction.
201 @function
202 @returns {Boolean} <code>true</code> if the current thread has an open transaction, <code>flase</code> otherwise.
203 */
204 hasCurrentTransaction: { value: function() {
205 return false;
206 }},
207
208/**
209 Sets the transaction ID as the current transaction.<br>
210 The transaction ID can be made current only if there is no other transaction in process for the thread, and this transaction is not used by another thread.
211 @function
212 @param {Property} transactionId to use
213 @throws IllegalStateException if there is an open transaction for this thread or if there is another thread using this ID.
214 */
215 openTransaction: { value: function(transactionId) {
216 //
217 }},
218
219/**
220 Retires a transaction ID of the current thread.
221 @function
222 @param {Property} transactionId The current transaction ID.
223 @throws IllegalStateException if there is no open transaction ID for this thread.
224 */
225 closeTransaction: { value: function(transactionId) {
226 //
227 }}
228
229});
230