Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F946971
_base.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Subscribers
None
_base.js
View Options
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if
(
!
dojo
.
_hasResource
[
"dojox.cometd._base"
]){
dojo
.
_hasResource
[
"dojox.cometd._base"
]
=
true
;
dojo
.
provide
(
"dojox.cometd._base"
);
dojo
.
require
(
"dojo.AdapterRegistry"
);
dojox
.
cometd
=
{
Connection
:
function
(
_1
){
dojo
.
mixin
(
this
,{
prefix
:
_1
,
_status
:
"unconnected"
,
_handshook
:
false
,
_initialized
:
false
,
_polling
:
false
,
expectedNetworkDelay
:
10000
,
connectTimeout
:
0
,
version
:
"1.0"
,
minimumVersion
:
"0.9"
,
clientId
:
null
,
messageId
:
0
,
batch
:
0
,
_isXD
:
false
,
handshakeReturn
:
null
,
currentTransport
:
null
,
url
:
null
,
lastMessage
:
null
,
_messageQ
:
[],
handleAs
:
"json"
,
_advice
:
{},
_backoffInterval
:
0
,
_backoffIncrement
:
1000
,
_backoffMax
:
60000
,
_deferredSubscribes
:
{},
_deferredUnsubscribes
:
{},
_subscriptions
:
[],
_extendInList
:
[],
_extendOutList
:
[]});
this
.
state
=
function
(){
return
this
.
_status
;
};
this
.
init
=
function
(
_2
,
_3
,
_4
){
_3
=
_3
||
{};
_3
.
version
=
this
.
version
;
_3
.
minimumVersion
=
this
.
minimumVersion
;
_3
.
channel
=
"/meta/handshake"
;
_3
.
id
=
""
+
this
.
messageId
++
;
this
.
url
=
_2
||
dojo
.
config
[
"cometdRoot"
];
if
(
!
this
.
url
){
throw
"no cometd root"
;
return
null
;
}
var
_5
=
"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"
;
var
_6
=
(
""
+
window
.
location
).
match
(
new
RegExp
(
_5
));
if
(
_6
[
4
]){
var
_7
=
_6
[
4
].
split
(
":"
);
var
_8
=
_7
[
0
];
var
_9
=
_7
[
1
]
||
"80"
;
_6
=
this
.
url
.
match
(
new
RegExp
(
_5
));
if
(
_6
[
4
]){
_7
=
_6
[
4
].
split
(
":"
);
var
_a
=
_7
[
0
];
var
_b
=
_7
[
1
]
||
"80"
;
this
.
_isXD
=
((
_a
!=
_8
)
||
(
_b
!=
_9
));
}
}
if
(
!
this
.
_isXD
){
_3
.
supportedConnectionTypes
=
dojo
.
map
(
dojox
.
cometd
.
connectionTypes
.
pairs
,
"return item[0]"
);
}
_3
=
this
.
_extendOut
(
_3
);
var
_c
=
{
url
:
this
.
url
,
handleAs
:
this
.
handleAs
,
content
:
{
"message"
:
dojo
.
toJson
([
_3
])},
load
:
dojo
.
hitch
(
this
,
function
(
_d
){
this
.
_backon
();
this
.
_finishInit
(
_d
);
}),
error
:
dojo
.
hitch
(
this
,
function
(
e
){
this
.
_backoff
();
this
.
_finishInit
(
e
);
}),
timeout
:
this
.
expectedNetworkDelay
};
if
(
_4
){
dojo
.
mixin
(
_c
,
_4
);
}
this
.
_props
=
_3
;
for
(
var
_e
in
this
.
_subscriptions
){
for
(
var
_f
in
this
.
_subscriptions
[
_e
]){
if
(
this
.
_subscriptions
[
_e
][
_f
].
topic
){
dojo
.
unsubscribe
(
this
.
_subscriptions
[
_e
][
_f
].
topic
);
}
}
}
this
.
_messageQ
=
[];
this
.
_subscriptions
=
[];
this
.
_initialized
=
true
;
this
.
_status
=
"handshaking"
;
this
.
batch
=
0
;
this
.
startBatch
();
var
r
;
if
(
this
.
_isXD
){
_c
.
callbackParamName
=
"jsonp"
;
r
=
dojo
.
io
.
script
.
get
(
_c
);
}
else
{
r
=
dojo
.
xhrPost
(
_c
);
}
return
r
;
};
this
.
publish
=
function
(
_10
,
_11
,
_12
){
var
_13
=
{
data
:
_11
,
channel
:
_10
};
if
(
_12
){
dojo
.
mixin
(
_13
,
_12
);
}
this
.
_sendMessage
(
_13
);
};
this
.
subscribe
=
function
(
_14
,
_15
,
_16
,
_17
){
_17
=
_17
||
{};
if
(
_15
){
var
_18
=
_1
+
_14
;
var
_19
=
this
.
_subscriptions
[
_18
];
if
(
!
_19
||
_19
.
length
==
0
){
_19
=
[];
_17
.
channel
=
"/meta/subscribe"
;
_17
.
subscription
=
_14
;
this
.
_sendMessage
(
_17
);
var
_1a
=
this
.
_deferredSubscribes
;
if
(
_1a
[
_14
]){
_1a
[
_14
].
cancel
();
delete
_1a
[
_14
];
}
_1a
[
_14
]
=
new
dojo
.
Deferred
();
}
for
(
var
i
in
_19
){
if
(
_19
[
i
].
objOrFunc
===
_15
&&
(
!
_19
[
i
].
funcName
&&!
_16
||
_19
[
i
].
funcName
==
_16
)){
return
null
;
}
}
var
_1b
=
dojo
.
subscribe
(
_18
,
_15
,
_16
);
_19
.
push
({
topic
:
_1b
,
objOrFunc
:
_15
,
funcName
:
_16
});
this
.
_subscriptions
[
_18
]
=
_19
;
}
var
ret
=
this
.
_deferredSubscribes
[
_14
]
||
{};
ret
.
args
=
dojo
.
_toArray
(
arguments
);
return
ret
;
};
this
.
unsubscribe
=
function
(
_1c
,
_1d
,
_1e
,
_1f
){
if
((
arguments
.
length
==
1
)
&&
(
!
dojo
.
isString
(
_1c
))
&&
(
_1c
.
args
)){
return
this
.
unsubscribe
.
apply
(
this
,
_1c
.
args
);
}
var
_20
=
_1
+
_1c
;
var
_21
=
this
.
_subscriptions
[
_20
];
if
(
!
_21
||
_21
.
length
==
0
){
return
null
;
}
var
s
=
0
;
for
(
var
i
in
_21
){
var
sb
=
_21
[
i
];
if
((
!
_1d
)
||
(
sb
.
objOrFunc
===
_1d
&&
(
!
sb
.
funcName
&&!
_1e
||
sb
.
funcName
==
_1e
))){
dojo
.
unsubscribe
(
_21
[
i
].
topic
);
delete
_21
[
i
];
}
else
{
s
++
;
}
}
if
(
s
==
0
){
_1f
=
_1f
||
{};
_1f
.
channel
=
"/meta/unsubscribe"
;
_1f
.
subscription
=
_1c
;
delete
this
.
_subscriptions
[
_20
];
this
.
_sendMessage
(
_1f
);
this
.
_deferredUnsubscribes
[
_1c
]
=
new
dojo
.
Deferred
();
if
(
this
.
_deferredSubscribes
[
_1c
]){
this
.
_deferredSubscribes
[
_1c
].
cancel
();
delete
this
.
_deferredSubscribes
[
_1c
];
}
}
return
this
.
_deferredUnsubscribes
[
_1c
];
};
this
.
disconnect
=
function
(){
for
(
var
_22
in
this
.
_subscriptions
){
for
(
var
sub
in
this
.
_subscriptions
[
_22
]){
if
(
this
.
_subscriptions
[
_22
][
sub
].
topic
){
dojo
.
unsubscribe
(
this
.
_subscriptions
[
_22
][
sub
].
topic
);
}
}
}
this
.
_subscriptions
=
[];
this
.
_messageQ
=
[];
if
(
this
.
_initialized
&&
this
.
currentTransport
){
this
.
_initialized
=
false
;
this
.
currentTransport
.
disconnect
();
}
if
(
!
this
.
_polling
){
this
.
_publishMeta
(
"connect"
,
false
);
}
this
.
_initialized
=
false
;
this
.
_handshook
=
false
;
this
.
_status
=
"disconnected"
;
this
.
_publishMeta
(
"disconnect"
,
true
);
};
this
.
subscribed
=
function
(
_23
,
_24
){
};
this
.
unsubscribed
=
function
(
_25
,
_26
){
};
this
.
tunnelInit
=
function
(
_27
,
_28
){
};
this
.
tunnelCollapse
=
function
(){
};
this
.
_backoff
=
function
(){
if
(
!
this
.
_advice
){
this
.
_advice
=
{
reconnect
:
"retry"
,
interval
:
0
};
}
else
{
if
(
!
this
.
_advice
.
interval
){
this
.
_advice
.
interval
=
0
;
}
}
if
(
this
.
_backoffInterval
<
this
.
_backoffMax
){
this
.
_backoffInterval
+=
this
.
_backoffIncrement
;
}
};
this
.
_backon
=
function
(){
this
.
_backoffInterval
=
0
;
};
this
.
_interval
=
function
(){
var
i
=
this
.
_backoffInterval
+
(
this
.
_advice
?
(
this
.
_advice
.
interval
?
this
.
_advice
.
interval
:
0
)
:
0
);
if
(
i
>
0
){
}
return
i
;
};
this
.
_publishMeta
=
function
(
_29
,
_2a
,
_2b
){
try
{
var
_2c
=
{
cometd
:
this
,
action
:
_29
,
successful
:
_2a
,
state
:
this
.
state
()};
if
(
_2b
){
dojo
.
mixin
(
_2c
,
_2b
);
}
dojo
.
publish
(
this
.
prefix
+
"/meta"
,[
_2c
]);
}
catch
(
e
){
}
};
this
.
_finishInit
=
function
(
_2d
){
if
(
this
.
_status
!=
"handshaking"
){
return
;
}
var
_2e
=
this
.
_handshook
;
var
_2f
=
false
;
var
_30
=
{};
if
(
_2d
instanceof
Error
){
dojo
.
mixin
(
_30
,{
reestablish
:
false
,
failure
:
true
,
error
:
_2d
,
advice
:
this
.
_advice
});
}
else
{
_2d
=
_2d
[
0
];
_2d
=
this
.
_extendIn
(
_2d
);
this
.
handshakeReturn
=
_2d
;
if
(
_2d
[
"advice"
]){
this
.
_advice
=
_2d
.
advice
;
}
_2f
=
_2d
.
successful
?
_2d
.
successful
:
false
;
if
(
_2d
.
version
<
this
.
minimumVersion
){
if
(
console
.
log
){
}
_2f
=
false
;
this
.
_advice
.
reconnect
=
"none"
;
}
dojo
.
mixin
(
_30
,{
reestablish
:
_2f
&&
_2e
,
response
:
_2d
});
}
this
.
_publishMeta
(
"handshake"
,
_2f
,
_30
);
if
(
this
.
_status
!=
"handshaking"
){
return
;
}
if
(
_2f
){
this
.
_status
=
"connecting"
;
this
.
_handshook
=
true
;
this
.
currentTransport
=
dojox
.
cometd
.
connectionTypes
.
match
(
_2d
.
supportedConnectionTypes
,
_2d
.
version
,
this
.
_isXD
);
var
_31
=
this
.
currentTransport
;
_31
.
_cometd
=
this
;
_31
.
version
=
_2d
.
version
;
this
.
clientId
=
_2d
.
clientId
;
this
.
tunnelInit
=
_31
.
tunnelInit
&&
dojo
.
hitch
(
_31
,
"tunnelInit"
);
this
.
tunnelCollapse
=
_31
.
tunnelCollapse
&&
dojo
.
hitch
(
_31
,
"tunnelCollapse"
);
_31
.
startup
(
_2d
);
}
else
{
if
(
!
this
.
_advice
||
this
.
_advice
[
"reconnect"
]
!=
"none"
){
setTimeout
(
dojo
.
hitch
(
this
,
"init"
,
this
.
url
,
this
.
_props
),
this
.
_interval
());
}
}
};
this
.
_extendIn
=
function
(
_32
){
dojo
.
forEach
(
dojox
.
cometd
.
_extendInList
,
function
(
f
){
_32
=
f
(
_32
)
||
_32
;
});
return
_32
;
};
this
.
_extendOut
=
function
(
_33
){
dojo
.
forEach
(
dojox
.
cometd
.
_extendOutList
,
function
(
f
){
_33
=
f
(
_33
)
||
_33
;
});
return
_33
;
};
this
.
deliver
=
function
(
_34
){
dojo
.
forEach
(
_34
,
this
.
_deliver
,
this
);
return
_34
;
};
this
.
_deliver
=
function
(
_35
){
_35
=
this
.
_extendIn
(
_35
);
if
(
!
_35
[
"channel"
]){
if
(
_35
[
"success"
]
!==
true
){
return
;
}
}
this
.
lastMessage
=
_35
;
if
(
_35
.
advice
){
this
.
_advice
=
_35
.
advice
;
}
var
_36
=
null
;
if
((
_35
[
"channel"
])
&&
(
_35
.
channel
.
length
>
5
)
&&
(
_35
.
channel
.
substr
(
0
,
5
)
==
"/meta"
)){
switch
(
_35
.
channel
){
case
"/meta/connect"
:
var
_37
=
{
response
:
_35
};
if
(
_35
.
successful
){
if
(
this
.
_status
!=
"connected"
){
this
.
_status
=
"connected"
;
this
.
endBatch
();
}
}
if
(
this
.
_initialized
){
this
.
_publishMeta
(
"connect"
,
_35
.
successful
,
_37
);
}
break
;
case
"/meta/subscribe"
:
_36
=
this
.
_deferredSubscribes
[
_35
.
subscription
];
try
{
if
(
!
_35
.
successful
){
if
(
_36
){
_36
.
errback
(
new
Error
(
_35
.
error
));
}
this
.
currentTransport
.
cancelConnect
();
return
;
}
if
(
_36
){
_36
.
callback
(
true
);
}
this
.
subscribed
(
_35
.
subscription
,
_35
);
}
catch
(
e
){
log
.
warn
(
e
);
}
break
;
case
"/meta/unsubscribe"
:
_36
=
this
.
_deferredUnsubscribes
[
_35
.
subscription
];
try
{
if
(
!
_35
.
successful
){
if
(
_36
){
_36
.
errback
(
new
Error
(
_35
.
error
));
}
this
.
currentTransport
.
cancelConnect
();
return
;
}
if
(
_36
){
_36
.
callback
(
true
);
}
this
.
unsubscribed
(
_35
.
subscription
,
_35
);
}
catch
(
e
){
log
.
warn
(
e
);
}
break
;
default
:
if
(
_35
.
successful
&&!
_35
.
successful
){
this
.
currentTransport
.
cancelConnect
();
return
;
}
}
}
this
.
currentTransport
.
deliver
(
_35
);
if
(
_35
.
data
){
try
{
var
_38
=
[
_35
];
var
_39
=
_1
+
_35
.
channel
;
var
_3a
=
_35
.
channel
.
split
(
"/"
);
var
_3b
=
_1
;
for
(
var
i
=
1
;
i
<
_3a
.
length
-
1
;
i
++
){
dojo
.
publish
(
_3b
+
"/**"
,
_38
);
_3b
+=
"/"
+
_3a
[
i
];
}
dojo
.
publish
(
_3b
+
"/**"
,
_38
);
dojo
.
publish
(
_3b
+
"/*"
,
_38
);
dojo
.
publish
(
_39
,
_38
);
}
catch
(
e
){
}
}
};
this
.
_sendMessage
=
function
(
_3c
){
if
(
this
.
currentTransport
&&!
this
.
batch
){
return
this
.
currentTransport
.
sendMessages
([
_3c
]);
}
else
{
this
.
_messageQ
.
push
(
_3c
);
return
null
;
}
};
this
.
startBatch
=
function
(){
this
.
batch
++
;
};
this
.
endBatch
=
function
(){
if
(
--
this
.
batch
<=
0
&&
this
.
currentTransport
&&
this
.
_status
==
"connected"
){
this
.
batch
=
0
;
var
_3d
=
this
.
_messageQ
;
this
.
_messageQ
=
[];
if
(
_3d
.
length
>
0
){
this
.
currentTransport
.
sendMessages
(
_3d
);
}
}
};
this
.
_onUnload
=
function
(){
dojo
.
addOnUnload
(
dojox
.
cometd
,
"disconnect"
);
};
this
.
_connectTimeout
=
function
(){
var
_3e
=
0
;
if
(
this
.
_advice
&&
this
.
_advice
.
timeout
&&
this
.
expectedNetworkDelay
>
0
){
_3e
=
this
.
_advice
.
timeout
+
this
.
expectedNetworkDelay
;
}
if
(
this
.
connectTimeout
>
0
&&
this
.
connectTimeout
<
_3e
){
return
this
.
connectTimeout
;
}
return
_3e
;
};
},
connectionTypes
:
new
dojo
.
AdapterRegistry
(
true
)};
dojox
.
cometd
.
Connection
.
call
(
dojox
.
cometd
,
"/cometd"
);
dojo
.
addOnUnload
(
dojox
.
cometd
,
"_onUnload"
);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 09:46 (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26266
Default Alt Text
_base.js (9 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment