public abstract class AbstractXMPPConnection extends java.lang.Object implements XMPPConnection
| Modifier and Type | Class and Description |
|---|---|
protected static class |
AbstractXMPPConnection.InterceptorWrapper
A wrapper class to associate a stanza(/packet) filter with an interceptor.
|
protected static class |
AbstractXMPPConnection.ListenerWrapper
A wrapper class to associate a stanza(/packet) filter with a listener.
|
XMPPConnection.FromMode
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
authenticated
Flag that indicates if the user is currently authenticated with the server.
|
protected XMPPInputOutputStream |
compressionHandler |
protected ConnectionConfiguration |
config
Holds the initial configuration used while creating the connection.
|
protected boolean |
connected |
protected int |
connectionCounterValue
A number to uniquely identify connections that are created.
|
protected java.util.Set<ConnectionListener> |
connectionListeners
A collection of ConnectionListeners which listen for connection closing
and reconnection events.
|
protected java.util.concurrent.locks.Lock |
connectionLock |
protected SmackDebugger |
debugger
The SmackDebugger allows to log and debug XML traffic.
|
protected java.lang.String |
host
The used host to establish the connection to
|
protected java.util.List<HostAddress> |
hostAddresses |
protected SynchronizationPoint<java.lang.Exception> |
lastFeaturesReceived
Set to success if the last features stanza from the server has been parsed.
|
protected int |
port
The used port to establish the connection to
|
protected java.io.Reader |
reader
The Reader which is used for the debugger.
|
protected SASLAuthentication |
saslAuthentication
The SASLAuthentication manager that is responsible for authenticating with the server.
|
protected SynchronizationPoint<SmackException> |
saslFeatureReceived
Set to success if the sasl feature has been received.
|
protected java.util.Map<java.lang.String,ExtensionElement> |
streamFeatures |
protected java.lang.String |
streamId
The stream ID, see RFC 6120 § 4.7.3
|
protected org.jxmpp.jid.EntityFullJid |
user
The full JID of the authenticated user, as returned by the resource binding response of the server.
|
protected boolean |
wasAuthenticated
Flag that indicates if the user was authenticated with the server when the connection
to the server was closed (abruptly or not).
|
protected java.io.Writer |
writer
The Writer which is used for the debugger.
|
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractXMPPConnection(ConnectionConfiguration configuration)
Create a new XMPPConnection to an XMPP server.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addAsyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers an asynchronous stanza(/packet) listener with this connection.
|
void |
addConnectionListener(ConnectionListener connectionListener)
Adds a connection listener to this connection that will be notified when
the connection closes or fails.
|
void |
addOneTimeSyncCallback(StanzaListener callback,
StanzaFilter packetFilter)
Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
stanza(/packet) filter.
|
void |
addPacketInterceptor(StanzaListener packetInterceptor,
StanzaFilter packetFilter)
Registers a stanza(/packet) interceptor with this connection.
|
void |
addPacketListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Deprecated.
|
void |
addPacketSendingListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a stanza(/packet) listener with this connection.
|
protected void |
addStreamFeature(ExtensionElement feature) |
void |
addSyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a synchronous stanza(/packet) listener with this connection.
|
protected void |
afterFeaturesReceived() |
protected void |
afterSuccessfulLogin(boolean resumed) |
protected void |
asyncGo(java.lang.Runnable runnable) |
protected void |
bindResourceAndEstablishSession(org.jxmpp.jid.parts.Resourcepart resource) |
protected void |
callConnectionAuthenticatedListener(boolean resumed) |
protected void |
callConnectionClosedOnErrorListener(java.lang.Exception e) |
protected void |
callConnectionConnectedListener() |
AbstractXMPPConnection |
connect()
Establishes a connection to the XMPP server.
|
protected abstract void |
connectInternal()
Abstract method that concrete subclasses of XMPPConnection need to implement to perform their
way of XMPP connection establishment.
|
PacketCollector |
createPacketCollector(PacketCollector.Configuration configuration)
Create a new stanza(/packet) collector with the given stanza(/packet) collector configuration.
|
PacketCollector |
createPacketCollector(StanzaFilter packetFilter)
Creates a new stanza(/packet) collector for this connection.
|
PacketCollector |
createPacketCollectorAndSend(IQ packet)
Creates a new stanza(/packet) collector collecting packets that are replies to
packet . |
PacketCollector |
createPacketCollectorAndSend(StanzaFilter packetFilter,
Stanza packet)
Creates a new stanza(/packet) collector for this connection.
|
void |
disconnect()
Closes the connection by setting presence to unavailable then closing the connection to
the XMPP server.
|
void |
disconnect(Presence unavailablePresence)
Closes the connection.
|
protected void |
finalize() |
protected void |
firePacketSendingListeners(Stanza packet)
Process all stanza(/packet) listeners for sending packets.
|
ConnectionConfiguration |
getConfiguration()
Get the connection configuration used by this connection.
|
int |
getConnectionCounter()
Get the connection counter of this XMPPConnection instance.
|
protected java.util.concurrent.locks.Lock |
getConnectionLock() |
<F extends ExtensionElement> |
getFeature(java.lang.String element,
java.lang.String namespace)
Get the feature stanza(/packet) extensions for a given stream feature of the
server, or
null if the server doesn't support that feature. |
XMPPConnection.FromMode |
getFromMode()
Get the currently active FromMode.
|
java.lang.String |
getHost()
Returns the host name of the server where the XMPP server is running.
|
long |
getLastStanzaReceived()
Returns the timestamp in milliseconds when the last stanza was received.
|
long |
getPacketReplyTimeout()
Returns the current value of the reply timeout in milliseconds for request for this
XMPPConnection instance.
|
ParsingExceptionCallback |
getParsingExceptionCallback()
Get the current active parsing exception callback.
|
int |
getPort()
Returns the port number of the XMPP server for this connection.
|
protected SASLAuthentication |
getSASLAuthentication()
Returns the SASLAuthentication manager that is responsible for authenticating with
the server.
|
org.jxmpp.jid.DomainBareJid |
getServiceName()
Returns the name of the service provided by the XMPP server for this connection.
|
java.lang.String |
getStreamId()
Returns the stream ID for this connection, which is the value set by the server
when opening an XMPP stream.
|
java.lang.String |
getUsedSaslMechansism()
Get the name of the SASL mechanism that was used to authenticate this connection.
|
org.jxmpp.jid.EntityFullJid |
getUser()
Returns the full XMPP address of the user that is logged in to the connection or
null if not logged in yet.
|
org.jxmpp.jid.DomainBareJid |
getXMPPServiceDomain()
Returns the XMPP Domain of the service provided by the XMPP server and used for this connection.
|
boolean |
hasFeature(java.lang.String element,
java.lang.String namespace)
Return true if the server supports the given stream feature.
|
protected void |
initDebugger()
Initialize the
debugger . |
protected void |
invokePacketCollectorsAndNotifyRecvListeners(Stanza packet)
Invoke
PacketCollector.processPacket(Stanza) for every
PacketCollector with the given packet. |
boolean |
isAnonymous()
Returns true if currently authenticated anonymously.
|
boolean |
isAuthenticated()
Returns true if currently authenticated by successfully calling the login method.
|
boolean |
isConnected()
Returns true if currently connected to the XMPP server.
|
abstract boolean |
isSecureConnection()
Returns true if the connection to the server has successfully negotiated encryption.
|
abstract boolean |
isUsingCompression()
Returns true if network traffic is being compressed.
|
void |
login()
Logs in to the server using the strongest SASL mechanism supported by
the server.
|
void |
login(java.lang.CharSequence username,
java.lang.String password)
Same as
login(CharSequence, String, Resourcepart) , but takes the resource from the connection
configuration. |
void |
login(java.lang.CharSequence username,
java.lang.String password,
org.jxmpp.jid.parts.Resourcepart resource)
Login with the given username (authorization identity).
|
protected abstract void |
loginInternal(java.lang.String username,
java.lang.String password,
org.jxmpp.jid.parts.Resourcepart resource) |
protected void |
notifyReconnection()
Sends a notification indicating that the connection was reconnected successfully.
|
protected void |
parseAndProcessStanza(org.xmlpull.v1.XmlPullParser parser) |
protected void |
parseFeatures(org.xmlpull.v1.XmlPullParser parser) |
protected java.util.List<HostAddress> |
populateHostAddresses()
Populates
hostAddresses with at least one host address. |
protected void |
processStanza(Stanza stanza)
Processes a stanza(/packet) after it's been fully parsed by looping through the installed
stanza(/packet) collectors and listeners and letting them examine the stanza(/packet) to see if
they are a match with the filter.
|
IQRequestHandler |
registerIQRequestHandler(IQRequestHandler iqRequestHandler)
Register an IQ request handler with this connection.
|
boolean |
removeAsyncStanzaListener(StanzaListener packetListener)
Removes an asynchronous stanza(/packet) listener for received packets from this connection.
|
void |
removeConnectionListener(ConnectionListener connectionListener)
Removes a connection listener from this connection.
|
void |
removePacketCollector(PacketCollector collector)
Remove a stanza(/packet) collector of this connection.
|
void |
removePacketInterceptor(StanzaListener packetInterceptor)
Removes a stanza(/packet) interceptor.
|
boolean |
removePacketListener(StanzaListener packetListener)
Deprecated.
|
void |
removePacketSendingListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for sending packets from this connection.
|
boolean |
removeSyncStanzaListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for received packets from this connection.
|
protected java.util.concurrent.ScheduledFuture<?> |
schedule(java.lang.Runnable runnable,
long delay,
java.util.concurrent.TimeUnit unit) |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
abstract void |
sendNonza(Nonza element)
Send a Nonza.
|
void |
sendPacket(Stanza packet)
Deprecated.
|
void |
sendStanza(Stanza stanza)
Sends the specified stanza to the server.
|
protected abstract void |
sendStanzaInternal(Stanza packet) |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
setFromMode(XMPPConnection.FromMode fromMode)
Set the FromMode for this connection instance.
|
void |
setPacketReplyTimeout(long timeout)
Set the stanza(/packet) reply timeout in milliseconds.
|
void |
setParsingExceptionCallback(ParsingExceptionCallback callback)
Install a parsing exception callback, which will be invoked once an exception is encountered while parsing a
stanza.
|
void |
setReplyToUnknownIq(boolean replyToUnknownIq)
Set if Smack will automatically send
XMPPError.Condition.feature_not_implemented when a request IQ without a
registered IQRequestHandler is received. |
static void |
setReplyToUnknownIqDefault(boolean replyToUnkownIqDefault)
Set the default value used to determine if new connection will reply to unknown IQ requests.
|
protected void |
setWasAuthenticated()
Sets whether the connection has already logged in the server.
|
protected abstract void |
shutdown()
Shuts the current connection down.
|
protected void |
throwAlreadyConnectedExceptionIfAppropriate() |
protected void |
throwAlreadyLoggedInExceptionIfAppropriate() |
protected void |
throwNotConnectedExceptionIfAppropriate() |
protected void |
throwNotConnectedExceptionIfAppropriate(java.lang.String optionalHint) |
java.lang.String |
toString() |
IQRequestHandler |
unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
Convenience method for
XMPPConnection.unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type) . |
IQRequestHandler |
unregisterIQRequestHandler(java.lang.String element,
java.lang.String namespace,
IQ.Type type)
Unregister an IQ request handler with this connection.
|
protected final java.util.Set<ConnectionListener> connectionListeners
protected final java.util.concurrent.locks.Lock connectionLock
protected final java.util.Map<java.lang.String,ExtensionElement> streamFeatures
protected org.jxmpp.jid.EntityFullJid user
It is important that we don't infer the user from the login() arguments and the configurations service name, as, for example, when SASL External is used, the username is not given to login but taken from the 'external' certificate.
protected boolean connected
protected java.lang.String streamId
protected SmackDebugger debugger
protected java.io.Reader reader
protected java.io.Writer writer
protected final SynchronizationPoint<java.lang.Exception> lastFeaturesReceived
protected final SynchronizationPoint<SmackException> saslFeatureReceived
protected final SASLAuthentication saslAuthentication
protected final int connectionCounterValue
protected final ConnectionConfiguration config
protected XMPPInputOutputStream compressionHandler
protected java.lang.String host
protected int port
protected boolean authenticated
protected boolean wasAuthenticated
protected java.util.List<HostAddress> hostAddresses
protected AbstractXMPPConnection(ConnectionConfiguration configuration)
configuration
- The configuration which is used to establish the connection.public ConnectionConfiguration getConfiguration()
public org.jxmpp.jid.DomainBareJid getServiceName()
XMPPConnection
getServiceName
in interface XMPPConnection
XMPPConnection.getXMPPServiceDomain()
instead.public org.jxmpp.jid.DomainBareJid getXMPPServiceDomain()
XMPPConnection
getXMPPServiceDomain
in interface XMPPConnection
public java.lang.String getHost()
XMPPConnection
getHost
in interface XMPPConnection
public int getPort()
XMPPConnection
getPort
in interface XMPPConnection
public abstract boolean isSecureConnection()
XMPPConnection
isSecureConnection
in interface XMPPConnection
protected abstract void sendStanzaInternal(Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.NotConnectedException
java.lang.InterruptedException
public abstract void sendNonza(Nonza element) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
This method is not meant for end-user usage! It allows sending plain stream elements, which should not be done by a user manually. Doing so may result in a unstable or unusable connection. Certain Smack APIs use this method to send plain stream elements.
sendNonza
in interface XMPPConnection
element
- the Nonza to send.SmackException.NotConnectedException
java.lang.InterruptedException
public abstract boolean isUsingCompression()
XMPPConnection
isUsingCompression
in interface XMPPConnection
public AbstractXMPPConnection connect() throws SmackException, java.io.IOException, XMPPException, java.lang.InterruptedException
Listeners will be preserved from a previous connection.
connect()
with login()
.XMPPException
- if an error occurs on the XMPP protocol level.SmackException
- if an error occurs somewhere else besides XMPP protocol level.java.io.IOException
java.lang.InterruptedException
protected abstract void connectInternal() throws SmackException, java.io.IOException, XMPPException, java.lang.InterruptedException
SmackException
java.io.IOException
XMPPException
java.lang.InterruptedException
public void login() throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
SmackException.NoResponseException
will be thrown.
Before logging in (i.e. authenticate) to the server the connection must be connected
by calling connect()
.
It is possible to log in without sending an initial available presence by using
ConnectionConfiguration.Builder.setSendPresence(boolean)
.
Finally, if you want to not pass a password and instead use a more advanced mechanism
while using SASL then you may be interested in using
ConnectionConfiguration.Builder.setCallbackHandler(javax.security.auth.callback.CallbackHandler)
.
For more advanced login settings see ConnectionConfiguration
.
XMPPException
- if an error occurs on the XMPP protocol level.SmackException
- if an error occurs somewhere else besides XMPP protocol level.java.io.IOException
- if an I/O error occurs during login.java.lang.InterruptedException
public void login(java.lang.CharSequence username, java.lang.String password) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
login(CharSequence, String, Resourcepart)
, but takes the resource from the connection
configuration.username
- password
- XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
login()
public void login(java.lang.CharSequence username, java.lang.String password, org.jxmpp.jid.parts.Resourcepart resource) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
username
- password
- resource
- XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
login()
protected abstract void loginInternal(java.lang.String username, java.lang.String password, org.jxmpp.jid.parts.Resourcepart resource) throws XMPPException, SmackException, java.io.IOException, java.lang.InterruptedException
XMPPException
SmackException
java.io.IOException
java.lang.InterruptedException
public final boolean isConnected()
XMPPConnection
isConnected
in interface XMPPConnection
public final boolean isAuthenticated()
XMPPConnection
isAuthenticated
in interface XMPPConnection
public final org.jxmpp.jid.EntityFullJid getUser()
XMPPConnection
getUser
in interface XMPPConnection
public java.lang.String getStreamId()
XMPPConnection
getStreamId
in interface XMPPConnection
protected void bindResourceAndEstablishSession(org.jxmpp.jid.parts.Resourcepart resource) throws XMPPException.XMPPErrorException, SmackException, java.lang.InterruptedException
XMPPException.XMPPErrorException
SmackException
java.lang.InterruptedException
protected void afterSuccessfulLogin(boolean resumed) throws SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.NotConnectedException
java.lang.InterruptedException
public final boolean isAnonymous()
XMPPConnection
isAnonymous
in interface XMPPConnection
public final java.lang.String getUsedSaslMechansism()
null
if
this connection was not authenticated before.protected java.util.List<HostAddress> populateHostAddresses()
hostAddresses
with at least one host address.protected java.util.concurrent.locks.Lock getConnectionLock()
protected void throwNotConnectedExceptionIfAppropriate() throws SmackException.NotConnectedException
protected void throwNotConnectedExceptionIfAppropriate(java.lang.String optionalHint) throws SmackException.NotConnectedException
protected void throwAlreadyConnectedExceptionIfAppropriate() throws SmackException.AlreadyConnectedException
protected void throwAlreadyLoggedInExceptionIfAppropriate() throws SmackException.AlreadyLoggedInException
@Deprecated public void sendPacket(Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
sendPacket
in interface XMPPConnection
packet
- the stanza(/packet) to send.SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanza(Stanza stanza) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
sendStanza
in interface XMPPConnection
stanza
- the stanza to send.SmackException.NotConnectedException
- if the connection is not connected.java.lang.InterruptedException
protected SASLAuthentication getSASLAuthentication()
public void disconnect()
public void disconnect(Presence unavailablePresence) throws SmackException.NotConnectedException
unavailablePresence
- the presence stanza(/packet) to send during shutdown.SmackException.NotConnectedException
protected abstract void shutdown()
public void addConnectionListener(ConnectionListener connectionListener)
XMPPConnection
addConnectionListener
in interface XMPPConnection
connectionListener
- a connection listener.public void removeConnectionListener(ConnectionListener connectionListener)
XMPPConnection
removeConnectionListener
in interface XMPPConnection
connectionListener
- a connection listener.public PacketCollector createPacketCollectorAndSend(IQ packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
packet
.
Does also send packet
. The stanza(/packet) filter for the collector is an
IQReplyFilter
, guaranteeing that stanza(/packet) id and JID in the 'from' address have
expected values.createPacketCollectorAndSend
in interface XMPPConnection
packet
- the stanza(/packet) to filter responses fromSmackException.NotConnectedException
java.lang.InterruptedException
public PacketCollector createPacketCollectorAndSend(StanzaFilter packetFilter, Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
StanzaListener
when you need to wait for
a specific result.createPacketCollectorAndSend
in interface XMPPConnection
packetFilter
- the stanza(/packet) filter to use.packet
- the packet to send right after the collector got createdSmackException.NotConnectedException
java.lang.InterruptedException
public PacketCollector createPacketCollector(StanzaFilter packetFilter)
XMPPConnection
StanzaListener
when you need to wait for a specific result.
Note: If you send a Stanza(/Packet) right after using this method, then
consider using
XMPPConnection.createPacketCollectorAndSend(StanzaFilter, Stanza)
instead.
Otherwise make sure cancel the PacketCollector in every case, e.g. even
if an exception is thrown, or otherwise you may leak the PacketCollector.
createPacketCollector
in interface XMPPConnection
packetFilter
- the stanza(/packet) filter to use.public PacketCollector createPacketCollector(PacketCollector.Configuration configuration)
XMPPConnection
Please make sure to cancel the collector when it is no longer required. See also
XMPPConnection.createPacketCollector(StanzaFilter)
.
createPacketCollector
in interface XMPPConnection
configuration
- the stanza(/packet) collector configuration.public void removePacketCollector(PacketCollector collector)
XMPPConnection
removePacketCollector
in interface XMPPConnection
collector
- a stanza(/packet) collectors which was created for this connection.@Deprecated public void addPacketListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
This method has been deprecated. It is important to differentiate between using an asynchronous stanza(/packet) listener
(preferred where possible) and a synchronous stanza(/packet) lister. Refer
XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
and
XMPPConnection.addSyncStanzaListener(StanzaListener, StanzaFilter)
for more information.
addPacketListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.@Deprecated public boolean removePacketListener(StanzaListener packetListener)
XMPPConnection
removePacketListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addSyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
Important: This stanza(/packet) listeners will be called in the same single thread that processes all
incoming stanzas. Only use this kind of stanza(/packet) filter if it does not perform any XMPP activity that waits for a
response. Consider using XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
when possible, i.e. when
the invocation order doesn't have to be the same as the order of the arriving packets. If the order of the
arriving packets, consider using a PacketCollector
when possible.
addSyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.XMPPConnection.addPacketInterceptor(StanzaListener, StanzaFilter)
public boolean removeSyncStanzaListener(StanzaListener packetListener)
XMPPConnection
removeSyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addAsyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
Unlike XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
stanza(/packet) listeners added with this method will be
invoked asynchronously in their own thread. Use this method if the order of the stanza(/packet) listeners must not depend
on the order how the stanzas where received.
addAsyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.XMPPConnection.addPacketInterceptor(StanzaListener, StanzaFilter)
public boolean removeAsyncStanzaListener(StanzaListener packetListener)
XMPPConnection
removeAsyncStanzaListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.public void addPacketSendingListener(StanzaListener packetListener, StanzaFilter packetFilter)
XMPPConnection
addPacketSendingListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to notify of sent packets.packetFilter
- the stanza(/packet) filter to use.public void removePacketSendingListener(StanzaListener packetListener)
XMPPConnection
removePacketSendingListener
in interface XMPPConnection
packetListener
- the stanza(/packet) listener to remove.protected void firePacketSendingListeners(Stanza packet)
Compared to firePacketInterceptors(Stanza)
, the listeners will be invoked in a new thread.
packet
- the stanza(/packet) to process.public void addPacketInterceptor(StanzaListener packetInterceptor, StanzaFilter packetFilter)
XMPPConnection
NOTE: For a similar functionality on incoming packets, see XMPPConnection.addAsyncStanzaListener(StanzaListener, StanzaFilter)
.
addPacketInterceptor
in interface XMPPConnection
packetInterceptor
- the stanza(/packet) interceptor to notify of packets about to be sent.packetFilter
- the stanza(/packet) filter to use.public void removePacketInterceptor(StanzaListener packetInterceptor)
XMPPConnection
removePacketInterceptor
in interface XMPPConnection
packetInterceptor
- the stanza(/packet) interceptor to remove.protected void initDebugger()
debugger
. You can specify a customized SmackDebugger
by setup the system property smack.debuggerClass
to the implementation.java.lang.IllegalStateException
- if the reader or writer isn't yet initialized.java.lang.IllegalArgumentException
- if the SmackDebugger can't be loaded.public long getPacketReplyTimeout()
XMPPConnection
getPacketReplyTimeout
in interface XMPPConnection
public void setPacketReplyTimeout(long timeout)
XMPPConnection
SmackException.NoResponseException
if no reply to a request was received within the timeout period.setPacketReplyTimeout
in interface XMPPConnection
timeout
- the stanza(/packet) reply timeout in millisecondspublic static void setReplyToUnknownIqDefault(boolean replyToUnkownIqDefault)
replyToUnkownIqDefault
- setReplyToUnknownIq(boolean)
public void setReplyToUnknownIq(boolean replyToUnknownIq)
XMPPError.Condition.feature_not_implemented
when a request IQ without a
registered IQRequestHandler
is received.replyToUnknownIq
- protected void parseAndProcessStanza(org.xmlpull.v1.XmlPullParser parser) throws java.lang.Exception
java.lang.Exception
protected void processStanza(Stanza stanza) throws java.lang.InterruptedException
stanza
- the stanza to process.java.lang.InterruptedException
protected void invokePacketCollectorsAndNotifyRecvListeners(Stanza packet)
PacketCollector.processPacket(Stanza)
for every
PacketCollector with the given packet. Also notify the receive listeners with a matching stanza(/packet) filter about the packet.packet
- the stanza(/packet) to notify the PacketCollectors and receive listeners about.protected void setWasAuthenticated()
wasAuthenticated
flag is never reset once it has ever been set.protected void callConnectionConnectedListener()
protected void callConnectionAuthenticatedListener(boolean resumed)
protected void callConnectionClosedOnErrorListener(java.lang.Exception e)
protected void notifyReconnection()
public int getConnectionCounter()
XMPPConnection
getConnectionCounter
in interface XMPPConnection
public void setFromMode(XMPPConnection.FromMode fromMode)
XMPPConnection
setFromMode
in interface XMPPConnection
public XMPPConnection.FromMode getFromMode()
XMPPConnection
getFromMode
in interface XMPPConnection
XMPPConnection.FromMode
protected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
protected final void parseFeatures(org.xmlpull.v1.XmlPullParser parser) throws java.lang.Exception
java.lang.Exception
protected void afterFeaturesReceived() throws SmackException.SecurityRequiredException, SmackException.NotConnectedException, java.lang.InterruptedException
SmackException.SecurityRequiredException
SmackException.NotConnectedException
java.lang.InterruptedException
public <F extends ExtensionElement> F getFeature(java.lang.String element, java.lang.String namespace)
XMPPConnection
null
if the server doesn't support that feature.getFeature
in interface XMPPConnection
null
public boolean hasFeature(java.lang.String element, java.lang.String namespace)
XMPPConnection
hasFeature
in interface XMPPConnection
protected void addStreamFeature(ExtensionElement feature)
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. The callback will be
invoked at most once and it will be not invoked after the connections default reply timeout
has been elapsed.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after the connections default reply timeout, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after timeout
milliseconds, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
sendStanzaWithResponseCallback
in interface XMPPConnection
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)timeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. The callback will
not be invoked after the connections default reply timeout has been elapsed.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)SmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after the
connections default reply timeout, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionalSmackException.NotConnectedException
java.lang.InterruptedException
public void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
XMPPConnection
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after
timeout
, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.sendIqWithResponseCallback
in interface XMPPConnection
iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionaltimeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
public void addOneTimeSyncCallback(StanzaListener callback, StanzaFilter packetFilter)
XMPPConnection
addOneTimeSyncCallback
in interface XMPPConnection
callback
- the callback invoked once the stanza(/packet) filter matches a stanza.packetFilter
- the filter to match stanzas or null to match all.public IQRequestHandler registerIQRequestHandler(IQRequestHandler iqRequestHandler)
XMPPConnection
IQ request handler process incoming IQ requests, i.e. incoming IQ stanzas of type 'get' or 'set', and return a result.
registerIQRequestHandler
in interface XMPPConnection
iqRequestHandler
- the IQ request handler to register.public final IQRequestHandler unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
XMPPConnection
XMPPConnection.unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type)
.unregisterIQRequestHandler
in interface XMPPConnection
public IQRequestHandler unregisterIQRequestHandler(java.lang.String element, java.lang.String namespace, IQ.Type type)
XMPPConnection
unregisterIQRequestHandler
in interface XMPPConnection
element
- the IQ element the IQ request handler is responsible for.namespace
- the IQ namespace the IQ request handler is responsible for.type
- the IQ type the IQ request handler is responsible for.public long getLastStanzaReceived()
XMPPConnection
getLastStanzaReceived
in interface XMPPConnection
public void setParsingExceptionCallback(ParsingExceptionCallback callback)
callback
- the callback to installpublic ParsingExceptionCallback getParsingExceptionCallback()
public final java.lang.String toString()
toString
in class java.lang.Object
protected final void asyncGo(java.lang.Runnable runnable)
protected final java.util.concurrent.ScheduledFuture<?> schedule(java.lang.Runnable runnable, long delay, java.util.concurrent.TimeUnit unit)


WebSocket Scripts
WebSocket Sender
WebSocket Sender scripts are called before forwarding the WebSocket message frame to the server or client and can access and change any WebSocket message that is proxied via ZAP.
They are initially disabled, to enable them right click the relevant script in the Scripts tree and select "enable".
A template script is provided which gives details of the methods and parameters supported.
Fuzzer WebSocket Processor
Fuzzer WebSocket Processor scripts are called before forwarding a fuzzed WebSocket message to the client/server. The payloads will have already been injected at this point.
A template script is provided which gives details of the methods and parameters supported.
WebSocket Passive Rules
WebSocket Passive Scan scripts are called every time a WebSocket message frame is transmitted over a WebSocket connection. Scripts can access WebSocket messages in order to examine the payload and raise an alert.
All of the default scripts are registered and enabled on start up. If you do not want them to run by default then right click the relevant scripts and select 'disable'.
If you delete them then they will be added and enabled again when you restart ZAP.
Template scripts are provided which give details of the methods and parameters supported.
In the WebSocket Passive Scan Rules section, there are descriptions for scripts which are included by default in the add-on.


Source files in event Package
Bank.scala
Bank2.scala
CallCenter.scala
CallCenter2.scala
Machine.scala
package.scala


Draw Result -
Draw Name
Draw Name
Lottery Date
Lottery Date
Drawn By
Drawn By
Date Drawn
Draw Date
Number of Prizes
Number of Prizes
Prize
Membership Number
Name
Town
Email
Phone
Mobile
Prize
Membership Number
Name
Town
Email
Phone
Mobile
Draws


Digital Fabrication & Prototyping Fundamentals (EP1000) is an elective module offered at Singapore Polytechnic. In this module you will learn how to use Digital Fabrication techniques to design and create prototypes. Things like Computer Aided Designing techniques, 3D printing, lazer cutting and work documentation will be taught.
Please head over to the "About" page to know more about this website or click here.
Last updated: 28 May 2021


"x" "1" "ONODERA,S, MAEDA,S AND SAITOH,T, MUTAGENIC AND MASS SPECTROMETRICCHARACTERIZATION OF OXYGEN ANALOGS (P=0) DERIVATIZED FROM ORGANOTHIOPHOSPHORUSPESTICIDES, KANKYO KAGAKU 5(3):617-624, 1995"


hasResolver(key: any, checkParent?: boolean): boolean
Inspects the container to determine if a particular key has been registred.
Parameters
key: any
The key that identifies the dependency at resolution time; usually a constructor function.
checkParent?: boolean
Indicates whether or not to check the parent container hierarchy.
Returns
Returns true if the key has been registred; false otherwise.


ignore accents and diacritics
(try "licao" to find "lição")
fuzzy search (slow!)
(try "sillable" or "syllabel" to find "syllable")
Notes on the demo:
- The demo is a bit slow because the example document is huge. This, in turn, allows you to watch the
find result events, demonstrating the asynchronous nature of the find API.
- I've chosen a portuguese text because this language has many special characters (such as ã, ç, and ê).
-
The example PDF has been published under a Creative Commons license at
https://wisc.pb.unizin.org/portuguese/.


Please fill out the form below.
You will receive a response from HTC Support within 48 hours
Topic:
Issue:
Power & Charging
Thank you, Jamie.
You will receive a response from HTC Support within 48 hours.
Topic:
Issue:
Power & Charging
Detail :
Some features that need to connect to the Internet such as location-based services and auto-sync of your online accounts may incur extra data fees. To avoid incurring data fees, disable these features under Settings. For more information on location services, see Turning location services on or off.
Name : Jamie
Email adress<EMAIL_ADDRESS>Phone number : +1(206)213-4509
Print it out


- Process
- - A flow of tasks running through different steps
|
- Actions on a process
- - Drag task to free space of step to signal process evolution
- - Click on save to save to browser local storage (if browser allows)
- - Click on load to restore from browser local storage (if browser allows)
|
- Step
- - Represented by a column
- - Contains a number of tasks
- - Name of the step is shown on top of the column
- - Number ot top level tasks is show on top right
|
- Action on a step
- - Click on step's name to create a new task
|
- Task
- - Represented by a colored box
- - Can be nested (sub-task)
- - Progress of the task is shown in bar on top of the box
- - Textual description of the task is below the progress bar
|
- Actions on a task
- - Click on X box to delete task (with contained sub-tasks)
- - Click on bar to change progress level
- - Click on description to edit it (html tags accepted)
- - Click on free space of the box to change color
- - Drag to part below description to nest task
|


Welcome to the Html5 Page
Here you are going to learn what HTML5 does and what it is below:
One thing you can do is make websites and also you can web applications. You can also make games in Html5 and with Adobe Flash ending support, a lot of games have been converted over to HTML5. Also you can use for things like IoT devices and IoT devices are like Rasberry PI's and Alexa and Google Home, etc.
HTML was first created by Tim Berners-Lee, Robert Cailliau, and others starting in 1989.
It stands for Hyper Text Markup Language.


Zigbee adapter
leak_add
Devices
Network map
Settings
autorenew
COM port name
PanID
Channel
Disable LED for cc2531
Disable active availability check
Disable Queue
Log warning on Zigbee device announcement
Rename device
Name
Delete confirmation
A bunch of text
Pairing process


As a Mac user I've always used Time Machine for local backups. The only issue is that it requires plugging a drive directly into your machine or buying an Apple Time Capsule. At $200 - $400 that's not a cheap option for NAS backups.
So I set out to create my own DIY Time Capsule using a 3TB Hard Drive and a Raspberry Pi. Below are the steps I went through to get things setup.
Note: I always recommend having multiple backup sources and because this setup requires mimicking Apple protocol there is potential for data loss. Use at your own risk.
Mounting USB Drive
To make the backup drive work directly plugged into the Raspberry Pi and my Mac, I formatted the drive as HFS+ Journaled. Out of the box, Raspbian (default Raspberry Pi OS) doesn't support HFS+ so we will need to add support.
$ sudo apt-get update
$ sudo apt-get install hfsprogs hfsplus
With that done we need to list the partitions of the drive we have plugged into the Raspberry Pi. This will give us the information we need to mount the drive. We'll use GNU Parted.
# start GNU Parted shell
$ sudo /sbin/parted
# once shell is loaded use `print` to show partition info
print
# output
Model: BUFFALO External HDD (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 20.5kB 210MB 210MB fat32 EFI System Partition boot
2 210MB 3000GB 3000GB hfs+ Time Machine 3TB
From that information we can see that the disk is /dev/sda
and we want to mount partition 2. We can now create our fstab entry.
# directory to mount drive
$ sudo mkdir -p /media/tm_3tb
# open fstab file; could use nano instead of vim
$ sudo vim /etc/fstab
# line to add to fstab file
/dev/sda2 /media/tm_3tb hfsplus force,rw,user,auto 0 0
With the entry in the fstab file the drive will auto boot when we restart, but we need to manually mount now.
$ sudo mount -a
Setup AFP
Now that we have our drive connected to the Raspberry Pi, we need a way to for Time Machine to see the drive. Apple uses the AFP standard for network file sharing.
Unfortunately AFP is an Apple only "standard" so we will need to install the Netatalk package. Also, because we want to use a 3.x version of Netatalk we will need to install from the source.
$ sudo apt-get install git
# pull down source code
$ mkdir ~/code
$ cd ~/code
# clone netatalk repo
$ git clone git://git.code.sf.net/p/netatalk/code netatalk
# checkout version 3-1-7
$ cd netatalk
$ git checkout netatalk-3-1-7
With the Netatalk source checked out we'll now install the dependencies we need.
$ sudo apt-get install build-essential \
libevent-dev \
libssl-dev \
libgcrypt11-dev \
libkrb5-dev \
libpam0g-dev \
libwrap0-dev \
libdb-dev \
libtdb-dev \
libmysqlclient-dev \
libavahi-client-dev \
libacl1-dev \
libldap2-dev \
libcrack2-dev \
systemtap-sdt-dev \
libdbus-1-dev \
libdbus-glib-1-dev \
libglib2.0-dev \
tracker \
libtracker-sparql-0.14-dev \
libtracker-miner-0.14-dev \
bison \
avahi-daemon
With those dependencies installed, we just need to make and install Netatalk.
$ ./bootstrap
$ ./configure \
--with-init-style=debian-sysv \
--without-libevent \
--without-tdb \
--with-cracklib \
--enable-krbV-uam \
--with-pam-confdir=/etc/pam.d \
--with-dbus-sysconf-dir=/etc/dbus-1/system.d \
--with-tracker-pkgconfig-version=0.14
$ make
$ sudo make install
To verify that netatalk installed correctly run this command:
$ afpd -V
Edit Configuration Files
Now that we have everything installed we'll setup the configuration files.
In /etc/nsswitch.conf
we need to change the line that reads:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
to
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
Next we need to create a file at /etc/avahi/services/afpd.service
with the following content:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>
Lastly we need to setup the /usr/local/etc/afp.conf
with the follow content.
[Global]
mimic model = TimeCapsule6,106
[Time Machine 3TB]
path = /media/tm_3tb
time machine = yes
Start Services
$ sudo service avahi-daemon start
$ sudo service netatalk start
Have these services start on boot:
sudo update-rc.d avahi-daemon defaults
sudo update-rc.d netatalk defaults
Setting up Time Machine
Now that you have things setup on the Raspberry Pi, we just need to open up Time Machine and add our new disk.
Once selected, use your SSH credentials to connect.
Viewing Backups
Once your first backup has completed you probably want to take a look at the files. Open up Finder and click on the raspberrypi
menu item under Shared. Then click the Connect As button in the upper right corner and enter your login credentials to the Raspberry Pi. This will allow you to browse the share which should look something like this:
On the share you'll see a .sparsebundle
file, which is where your backup is stored as an image. Double click on that file to mount the image.
With the image mounted you will see a Time Machine Backups
menu item in Finder under the Devices section.
Spin Down Idle Drive
Because our server will be running 24 hours a day, it's a good idea to have the backup drive spin down when not in use. The below commands will setup our drive to spin down after 30 minutes of no activity.
$ sudo apt-get install hdparm
$ sudo vim /etc/hdparm.conf
# add this entry at the bottom
command_line {
hdparm -S 240 /dev/sda
}
# restart server
$ sudo reboot
Sources
And that's it. Your DIY Time Capsule is complete. I used information from the sources below:
- http://outcoldman.com/en/archive/2014/11/09/ubuntu-as-home-server-part-3-afp-server
- http://netatalk.sourceforge.net/wiki/index.php/InstallNetatalk3.1.7onDebian7Wheezy
- http://ubuntuforums.org/showthread.php?t=2105755 (Steps 2 and 3)
- http://www.havetheknowhow.com/Configure-the-server/Spin-down-idle-drives.html


Imam Muhammad ibn Saud Islamic University (Arabic: جامعة الإمام محمد بن سعود الإسلامية) in Riyadh, Saudi Arabia, was founded in 1953.[1] In 1951, the university was established by merging the Islamic Law College and the Arabic Language College in Riyadh.[2] In 1974, it was granted university status by royal decree.[3] The university houses 12 faculties. It currently has more than 24,000 students and 1,300 faculty.[4] It has intermediate and secondary Islamic institutes in major cities of Saudi Arabia, Indonesia, Djibouti and Japan.[5] The university as a cultural and intellectual institution aims to promote knowledge offering undergraduate as well as postgraduate studies. One of the most important aims is to promote translating and publishing as the university has its own print house. Moreover, the university achieves its goals within the Islamic Shari'a
The university is organized into eleven colleges. The eleven colleges focus on: Shari'ah, Islam, Arabic language, social sciences, advocacy and media studies, language and translation, computer science and information science, economics and administrative sciences, formal science, medicine, and engineering. The University is home to the Institute of Translation and Arabization, a facility dedicated to the translation of Arabic texts to foreign languages, and translation of foreign language texts into Arabic (Arabization).
Note:
All the information above from wikipedia: Imam Muhammad ibn Saud Islamic University
This link for the university website Imam Muhammad ibn Saud Islamic University


Lisa Nguyen - CISW 321 - Professor Hayes
Home
|
Book
|
Assignments
|
Contact
Contact
Lisa Nguyen
4700 College Oak Drive
Sacramento, CA 95841
w1461924@apps.losrios.edu


Environment
EPA report on Tallanstown Water Supply branded 'shocking' by Louth TD
Boil Water Notice
by David LynchA local TD has branded the report from the Environmental Protection Agency that the Tallanstown Water Supply was contaminated for nearly 12 days before a Boil Water Notice as "shocking" and called for answers from Irish Water.
According to Fianna Fail TD Declan Breathnach, the EPA report found that this delay "posed an unacceptable risk to public health for the consumers of Tallanstown Public Water Supply".
Breathnach commented: “The EPA found that the treatment problem at the Tallanstown Water Supply began on July 19th , was not escalated to Irish Water until the 26th and then the Boil Water Notice was not put in place by Irish Water till July 30th.
"That’s almost two weeks of people in Mid Louth potentially drinking contaminated water.
“To make matters worse even though the Boil Water Notice has been partially lifted, 600 people served by Tallanstown are still under a Boil Water Notice.”
He continued: “Serious questions need to be asked to Irish Water on how they allowed this delay to happen. Communication from Irish Water has been very poor during Boil Water Notices, which was illustrated recently after 600,000 people served by the Leixlip Plant were put under Boil Water Notice. People deserve to feel safe drinking water in their own homes and when a problem arises it needed to be communicated clearly and quickly.”
According to a report in the Irish Times, Irish Water said adequate chlorine levels were being maintained consistently at all locations apart from one section of the network which was being in the process of being addressed.


Killing Monsters
Several early articles mentioned that the developers planned to have an open world similar to that of Skyrim, but 20% larger.Several early articles mentioned that the developers planned to have an open world similar to that of Skyrim, but 20% larger.


mkdir path/to/directory1 path/to/directory2 ...- Create specific directories and their [p]arents if needed:
mkdir -p path/to/directory1 path/to/directory2 ...- Create directories with specific permissions:
mkdir -m rwxrw-r-- path/to/directory1 path/to/directory2 ...


Student Grievance Redressal Portal
Students
|
MOC
|
Faculty
|
MOC
|
Director
|
University Head
|
Disclaimer
|
About Us
login


Recent and General Information Items...
Annual General Meetings
Feb 15 (Sat) at Santa Anita
Amador Martinez Triples
Mar 1 (Sun) at Oxnard


The content property in CSS is used in conjunction with the pseudo-elements ::before and ::after. It is used to literally insert content. There are four value types it can have.

This paragraph has a an after attribute.

$content: (); $content: map-merge( ( 0: "", "arrow": ">", ), $content );


class DEBUGGER__
This library provides debugging functionality to Ruby.
To add a debugger to your code, start by requiring debug
in
your program:
def say(word) require 'debug' puts word end
This will cause Ruby to interrupt execution and show a prompt when the
say
method is run.
Once you're inside the prompt, you can start debugging your program.
(rdb:1) p word "hello"
Getting help¶ ↑
You can get help at any time by pressing h
.
(rdb:1) h Debugger help v.-0.002b Commands b[reak] [file:|class:]<line|method> b[reak] [class.]<line|method> set breakpoint to some position wat[ch] <expression> set watchpoint to some expression cat[ch] (<exception>|off) set catchpoint to an exception b[reak] list breakpoints cat[ch] show catchpoint del[ete][ nnn] delete some or all breakpoints disp[lay] <expression> add expression into display expression list undisp[lay][ nnn] delete one particular or all display expressions c[ont] run until program ends or hit breakpoint s[tep][ nnn] step (into methods) one line or till line nnn n[ext][ nnn] go over one line or till line nnn w[here] display frames f[rame] alias for where l[ist][ (-|nn-mm)] list program, - lists backwards nn-mm lists given lines up[ nn] move to higher frame down[ nn] move to lower frame fin[ish] return to outer frame tr[ace] (on|off) set trace mode of current thread tr[ace] (on|off) all set trace mode of all threads q[uit] exit from debugger v[ar] g[lobal] show global variables v[ar] l[ocal] show local variables v[ar] i[nstance] <object> show instance variables of object v[ar] c[onst] <object> show constants of object m[ethod] i[nstance] <obj> show methods of object m[ethod] <class|module> show instance methods of class or module th[read] l[ist] list all threads th[read] c[ur[rent]] show current thread th[read] [sw[itch]] <nnn> switch thread context to nnn th[read] stop <nnn> stop thread nnn th[read] resume <nnn> resume thread nnn p expression evaluate expression and print its value h[elp] print this help <everything else> evaluate
Usage¶ ↑
The following is a list of common functionalities that the debugger provides.
Navigating through your code¶ ↑
In general, a debugger is used to find bugs in your program, which often means pausing execution and inspecting variables at some point in time.
Let's look at an example:
def my_method(foo) require 'debug' foo = get_foo if foo.nil? raise if foo.nil? end
When you run this program, the debugger will kick in just before the
foo
assignment.
(rdb:1) p foo nil
In this example, it'd be interesting to move to the next line and
inspect the value of foo
again. You can do that by pressing
n
:
(rdb:1) n # goes to next line (rdb:1) p foo nil
You now know that the original value of foo
was nil, and that
it still was nil after calling get_foo
.
Other useful commands for navigating through your code are:
c
-
Runs the program until it either exists or encounters another breakpoint. You usually press
c
when you are finished debugging your program and want to resume its execution. s
-
Steps into method definition. In the previous example,
s
would take you inside the method definition ofget_foo
. r
-
Restart the program.
q
-
Quit the program.
Inspecting variables¶ ↑
You can use the debugger to easily inspect both local and global variables. We've seen how to inspect local variables before:
(rdb:1) p my_arg 42
You can also pretty print the result of variables or expressions:
(rdb:1) pp %w{a very long long array containing many words} ["a", "very", "long", ... ]
You can list all local variables with +v l+:
(rdb:1) v l foo => "hello"
Similarly, you can show all global variables with +v g+:
(rdb:1) v g all global variables
Finally, you can omit p
if you simply want to evaluate a
variable or expression
(rdb:1) 5**2 25
Going beyond basics¶ ↑
Ruby Debug provides more advanced functionalities like switching between
threads, setting breakpoints and watch expressions, and more. The full list
of commands is available at any time by pressing h
.
Staying out of trouble¶ ↑
Make sure you remove every instance of +require 'debug'+ before shipping your code. Failing to do so may result in your program hanging unpredictably.
Debug is not available in safe mode.
Public Class Methods
Returns the list of break points where execution will be stopped.
See DEBUGGER__ for more usage
# File lib/debug.rb, line 920 def break_points @break_points end
# File lib/debug.rb, line 974 def context(thread=Thread.current) c = thread[:__debugger_data__] unless c thread[:__debugger_data__] = c = Context.new end c end
# File lib/debug.rb, line 1053 def debug_thread_info(input, binding) case input when /^l(?:ist)?/ make_thread_list thread_list_all when /^c(?:ur(?:rent)?)?$/ make_thread_list<EMAIL_ADDRESS>when /^(?:sw(?:itch)?\s+)?(\d+)/ make_thread_list th = get_thread($1.to_i) if th == Thread.current @stdout.print "It's the current thread.\n" else thread_list(@thread_list[th]) context(th).stop_next th.run return :cont end when /^stop\s+(\d+)/ make_thread_list th = get_thread($1.to_i) if th == Thread.current @stdout.print "It's the current thread.\n" elsif th.stop? @stdout.print "Already stopped.\n" else thread_list(@thread_list[th]) context(th).suspend end when /^resume\s+(\d+)/ make_thread_list th = get_thread($1.to_i) if th == Thread.current @stdout.print "It's the current thread.\n" elsif !th.stop? @stdout.print "Already running." else thread_list(@thread_list[th]) th.run end end end
Returns the display expression list
See DEBUGGER__ for more usage
# File lib/debug.rb, line 913 def display @display end
# File lib/debug.rb, line 986 def get_thread(num) th = @thread_list.key(num) unless th @stdout.print "No thread ##{num}\n" throw :debug_error end th end
# File lib/debug.rb, line 982 def interrupt context(@last_thread).stop_next end
# File lib/debug.rb, line 1040 def make_thread_list hash = {} for th in Thread::list if @thread_list.key? th hash[th] = @thread_list[th] else @max_thread += 1 hash[th] = @max_thread end end @thread_list = hash end
# File lib/debug.rb, line 958 def resume MUTEX.synchronize do make_thread_list @thread_list.each do |th,| next if th == Thread.current context(th).clear_suspend end waiting.each do |th| th.run end waiting.clear end # Schedule other threads to restart as soon as possible. Thread.pass end
# File lib/debug.rb, line 942 def set_last_thread(th) @last_thread = th end
# File lib/debug.rb, line 932 def set_trace( arg ) MUTEX.synchronize do make_thread_list for th, in @thread_list context(th).set_trace arg end end arg end
Returns the IO used as stdout. Defaults to STDOUT
# File lib/debug.rb, line 901 def stdout @stdout end
Sets the IO used as stdout. Defaults to STDOUT
# File lib/debug.rb, line 906 def stdout=(s) @stdout = s end
# File lib/debug.rb, line 946 def suspend MUTEX.synchronize do make_thread_list for th, in @thread_list next if th == Thread.current context(th).set_suspend end end # Schedule other threads to suspend as soon as possible. Thread.pass end
# File lib/debug.rb, line 995 def thread_list(num) th = get_thread(num) if th == Thread.current @stdout.print "+" else @stdout.print " " end @stdout.printf "%d ", num @stdout.print th.inspect, "\t" file = context(th).instance_eval{@file} if file @stdout.print file,":",context(th).instance_eval{@line} end @stdout.print "\n" end
Prints all threads in @thread_list to @stdout. Returns a sorted array of values from the @thread_list hash.
While in the debugger you can list all of the threads with: DEBUGGER__.thread_list_all
(rdb:1) DEBUGGER__.thread_list_all +1 #<Thread:0x007fb2320c03f0 run> debug_me.rb.rb:3 2 #<Thread:0x007fb23218a538@debug_me.rb.rb:3 sleep> 3 #<Thread:0x007fb23218b0f0@debug_me.rb.rb:3 sleep> [1, 2, 3]
Your current thread is indicated by a +
Additionally you can list all threads with th l
(rdb:1) th l +1 #<Thread:0x007f99328c0410 run> debug_me.rb:3 2 #<Thread:0x007f9932938230@debug_me.rb:3 sleep> debug_me.rb:3 3 #<Thread:0x007f9932938e10@debug_me.rb:3 sleep> debug_me.rb:3
See DEBUGGER__ for more usage.
# File lib/debug.rb, line 1034 def thread_list_all for th in @thread_list.values.sort thread_list(th) end end
Returns the list of waiting threads.
When stepping through the traces of a function, thread gets suspended, to be resumed later.
# File lib/debug.rb, line 928 def waiting @waiting end


VIM
Section: User Commands (1)Updated: 2006 Apr 11
Index Return to Main Contents
NAME
vim - Vi IMproved, a programmers text editorSYNOPSIS
vim [options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
ex
view
gvim
gview
evim
eview
rvim
rview
rgvim
rgview
DESCRIPTION
Vim is a text editor that is upwards compatible to Vi. It can be used to edit all kinds of plain text.  See ":help vi_diff.txt" for a summary of the differences between Vim and Vi.
While running Vim a lot of help can be obtained from the on-line help system, with the ":help" command. See the ON-LINE HELP section below.
Most often Vim is started to edit a single file with the command
vim file
More generally Vim is started with:
vim [options] [filelist]
If the filelist is missing, the editor will start with an empty buffer. Otherwise exactly one out of the following four may be used to choose one or more files to be edited.
- file ..
- A list of filenames. The first one will be the current file and read into the buffer. The cursor will be positioned on the first line of the buffer. You can get to the other files with the ":next" command. To edit a file that starts with a dash, precede the filelist with "--".
- -
- The file to edit is read from stdin. Commands are read from stderr, which should be a tty.
- -t {tag}
- The file to edit and the initial cursor position depends on a "tag", a sort of goto label. {tag} is looked up in the tags file, the associated file becomes the current file and the associated command is executed. Mostly this is used for C programs, in which case {tag} could be a function name. The effect is that the file containing that function becomes the current file and the cursor is positioned on the start of the function. See ":help tag-commands".
- -q [errorfile]
- Start in quickFix mode. The file [errorfile] is read and the first error is displayed. If [errorfile] is omitted, the filename is obtained from the 'errorfile' option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other systems). Further errors can be jumped to with the ":cn" command. See ":help quickfix".
Vim behaves differently, depending on the name of the command (the executable may still be the same file).
- vim
- The "normal" way, everything is default.
- ex
- Start in Ex mode. Go to Normal mode with the ":vi" command. Can also be done with the "-e" argument.
- view
- Start in read-only mode. You will be protected from writing the files. Can also be done with the "-R" argument.
- gvim gview
- The GUI version. Starts a new window. Can also be done with the "-g" argument.
- evim eview
- The GUI version in easy mode. Starts a new window. Can also be done with the "-y" argument.
- rvim rview rgvim rgview
- Like the above, but with restrictions. It will not be possible to start shell commands, or suspend Vim. Can also be done with the "-Z" argument.
OPTIONS
The options may be given in any order, before or after filenames. Options without an argument can be combined after a single dash.- +[num]
- For the first file the cursor will be positioned on line "num". If "num" is missing, the cursor will be positioned on the last line.
- +/{pat}
- For the first file the cursor will be positioned on the first occurrence of {pat}. See ":help search-pattern" for the available search patterns.
- +{command}
- -c {command}
-
{command} will be executed after the
first file has been read.
{command} is interpreted as an Ex command.
If the {command} contains spaces it must be enclosed in double quotes (this
depends on the shell that is used).
Example: Vim "+set si" main.c
Note: You can use up to 10 "+" or "-c" commands. - -S {file}
- {file} will be sourced after the first file has been read. This is equivalent to -c "source {file}". {file} cannot start with '-'. If {file} is omitted "Session.vim" is used (only works when -S is the last argument).
- --cmd {command}
- Like using "-c", but the command is executed just before processing any vimrc file. You can use up to 10 of these commands, independently from "-c" commands.
- -A
- If Vim has been compiled with ARABIC support for editing right-to-left oriented files and Arabic keyboard mapping, this option starts Vim in Arabic mode, i.e. 'arabic' is set. Otherwise an error message is given and Vim aborts.
- -b
- Binary mode. A few options will be set that makes it possible to edit a binary or executable file.
- -C
- Compatible. Set the 'compatible' option. This will make Vim behave mostly like Vi, even though a .vimrc file exists.
- -d
- Start in diff mode. There should be two, three or four file name arguments. Vim will open all the files and show differences between them. Works like vimdiff(1).
- -d {device}
- Open {device} for use as a terminal. Only on the Amiga. Example: "-d con:20/30/600/150".
- -D
- Debugging. Go to debugging mode when executing the first command from a script.
- -e
- Start Vim in Ex mode, just like the executable was called "ex".
- -E
- Start Vim in improved Ex mode, just like the executable was called "exim".
- -f
- Foreground. For the GUI version, Vim will not fork and detach from the shell it was started in. On the Amiga, Vim is not restarted to open a new window. This option should be used when Vim is executed by a program that will wait for the edit session to finish (e.g. mail). On the Amiga the ":sh" and ":!" commands will not work.
- --nofork
- Foreground. For the GUI version, Vim will not fork and detach from the shell it was started in.
- -F
- If Vim has been compiled with FKMAP support for editing right-to-left oriented files and Farsi keyboard mapping, this option starts Vim in Farsi mode, i.e. 'fkmap' and 'rightleft' are set. Otherwise an error message is given and Vim aborts.
- -g
- If Vim has been compiled with GUI support, this option enables the GUI. If no GUI support was compiled in, an error message is given and Vim aborts.
- -h
- Give a bit of help about the command line arguments and options. After this Vim exits.
- -H
- If Vim has been compiled with RIGHTLEFT support for editing right-to-left oriented files and Hebrew keyboard mapping, this option starts Vim in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set. Otherwise an error message is given and Vim aborts.
- -i {viminfo}
- When using the viminfo file is enabled, this option sets the filename to use, instead of the default "~/.viminfo". This can also be used to skip the use of the .viminfo file, by giving the name "NONE".
- -L
- Same as -r.
- -l
- Lisp mode. Sets the 'lisp' and 'showmatch' options on.
- -m
- Modifying files is disabled. Resets the 'write' option. You can still modify the buffer, but writing a file is not possible.
- -M
- Modifications not allowed. The 'modifiable' and 'write' options will be unset, so that changes are not allowed and files can not be written. Note that these options can be set to enable making modifications.
- -N
- No-compatible mode. Reset the 'compatible' option. This will make Vim behave a bit better, but less Vi compatible, even though a .vimrc file does not exist.
- -n
- No swap file will be used. Recovery after a crash will be impossible. Handy if you want to edit a file on a very slow medium (e.g. floppy). Can also be done with ":set uc=0". Can be undone with ":set uc=200".
- -nb
- Become an editor server for NetBeans. See the docs for details.
- -o[N]
- Open N windows stacked. When N is omitted, open one window for each file.
- -O[N]
- Open N windows side by side. When N is omitted, open one window for each file.
- -p[N]
- Open N tab pages. When N is omitted, open one tab page for each file.
- -R
- Read-only mode. The 'readonly' option will be set. You can still edit the buffer, but will be prevented from accidently overwriting a file. If you do want to overwrite a file, add an exclamation mark to the Ex command, as in ":w!". The -R option also implies the -n option (see below). The 'readonly' option can be reset with ":set noro". See ":help 'readonly'".
- -r
- List swap files, with information about using them for recovery.
- -r {file}
- Recovery mode. The swap file is used to recover a crashed editing session. The swap file is a file with the same filename as the text file with ".swp" appended. See ":help recovery".
- -s
- Silent mode. Only when started as "Ex" or when the "-e" option was given before the "-s" option.
- -s {scriptin}
- The script file {scriptin} is read. The characters in the file are interpreted as if you had typed them. The same can be done with the command ":source! {scriptin}". If the end of the file is reached before the editor exits, further characters are read from the keyboard.
- -T {terminal}
- Tells Vim the name of the terminal you are using. Only required when the automatic way doesn't work. Should be a terminal known to Vim (builtin) or defined in the termcap or terminfo file.
- -u {vimrc}
- Use the commands in the file {vimrc} for initializations. All the other initializations are skipped. Use this to edit a special kind of files. It can also be used to skip all initializations by giving the name "NONE". See ":help initialization" within vim for more details.
- -U {gvimrc}
- Use the commands in the file {gvimrc} for GUI initializations. All the other GUI initializations are skipped. It can also be used to skip all GUI initializations by giving the name "NONE". See ":help gui-init" within vim for more details.
- -V[N]
- Verbose. Give messages about which files are sourced and for reading and writing a viminfo file. The optional number N is the value for 'verbose'. Default is 10.
- -v
- Start Vim in Vi mode, just like the executable was called "vi". This only has effect when the executable is called "ex".
- -w {scriptout}
- All the characters that you type are recorded in the file {scriptout}, until you exit Vim. This is useful if you want to create a script file to be used with "vim -s" or ":source!". If the {scriptout} file exists, characters are appended.
- -W {scriptout}
- Like -w, but an existing file is overwritten.
- -x
- Use encryption when writing files. Will prompt for a crypt key.
- -X
- Don't connect to the X server. Shortens startup time in a terminal, but the window title and clipboard will not be used.
- -y
- Start Vim in easy mode, just like the executable was called "evim" or "eview". Makes Vim behave like a click-and-type editor.
- -Z
- Restricted mode. Works like the executable starts with "r".
- --
- Denotes the end of the options. Arguments after this will be handled as a file name. This can be used to edit a filename that starts with a '-'.
- --echo-wid
- GTK GUI only: Echo the Window ID on stdout.
- --help
- Give a help message and exit, just like "-h".
- --literal
- Take file name arguments literally, do not expand wildcards. This has no effect on Unix where the shell expands wildcards.
- --noplugin
- Skip loading plugins. Implied by -u NONE.
- --remote
- Connect to a Vim server and make it edit the files given in the rest of the arguments. If no server is found a warning is given and the files are edited in the current Vim.
- --remote-expr {expr}
- Connect to a Vim server, evaluate {expr} in it and print the result on stdout.
- --remote-send {keys}
- Connect to a Vim server and send {keys} to it.
- --remote-silent
- As --remote, but without the warning when no server is found.
- --remote-wait
- As --remote, but Vim does not exit until the files have been edited.
- --remote-wait-silent
- As --remote-wait, but without the warning when no server is found.
- --serverlist
- List the names of all Vim servers that can be found.
- --servername {name}
- Use {name} as the server name. Used for the current Vim, unless used with a --remote argument, then it's the name of the server to connect to.
- --socketid {id}
- GTK GUI only: Use the GtkPlug mechanism to run gvim in another window.
- --version
- Print version information and exit.
ON-LINE HELP
Type ":help" in Vim to get started. Type ":help subject" to get help on a specific subject. For example: ":help ZZ" to get help for the "ZZ" command. Use <Tab> and CTRL-D to complete subjects (":help cmdline-completion"). Tags are present to jump from one place to another (sort of hypertext links, see ":help"). All documentation files can be viewed in this way, for example ":help syntax.txt".FILES
- /usr/share/vim/vim72/doc/*.txt
- The Vim documentation files. Use ":help doc-file-list" to get the complete list.
- /usr/share/vim/vim72/doc/tags
- The tags file used for finding information in the documentation files.
- /usr/share/vim/vim72/syntax/syntax.vim
- System wide syntax initializations.
- /usr/share/vim/vim72/syntax/*.vim
- Syntax files for various languages.
- /usr/share/vim/vimrc
- System wide Vim initializations.
- ~/.vimrc
- Your personal Vim initializations.
- /usr/share/vim/gvimrc
- System wide gvim initializations.
- ~/.gvimrc
- Your personal gvim initializations.
- /usr/share/vim/vim72/optwin.vim
- Script used for the ":options" command, a nice way to view and set options.
- /usr/share/vim/vim72/menu.vim
- System wide menu initializations for gvim.
- /usr/share/vim/vim72/bugreport.vim
- Script to generate a bug report. See ":help bugs".
- /usr/share/vim/vim72/filetype.vim
- Script to detect the type of a file by its name. See ":help 'filetype'".
- /usr/share/vim/vim72/scripts.vim
- Script to detect the type of a file by its contents. See ":help 'filetype'".
- /usr/share/vim/vim72/print/*.ps
- Files used for PostScript printing.
For recent info read the VIM home page:
<URL:http://www.vim.org/>
SEE ALSO
vimtutor(1)AUTHOR
Most of Vim was made by Bram Moolenaar, with a lot of help from others. See ":help credits" in Vim.Vim is based on Stevie, worked on by: Tim Thompson, Tony Andrews and G.R. (Fred) Walter. Although hardly any of the original code remains.
BUGS
Probably. See ":help todo" for a list of known problems.Note that a number of things that may be regarded as bugs by some, are in fact caused by a too-faithful reproduction of Vi's behaviour. And if you think other things are bugs "because Vi does it differently", you should take a closer look at the vi_diff.txt file (or type :help vi_diff.txt when in Vim). Also have a look at the 'compatible' and 'cpoptions' options.
Index
This document was created by man2html, using the manual pages.
Time: 05:29:12 GMT, December 24, 2015


These two are my favourite quotes in life. It will be very surprising for you if I tell you how I heard these quotes. I am not so good at reading books infact I get really scared and demotivated when I see a very fat book in front of me. I love watching movies. Even if people said to me many times that reading books like 'Harry Potter', 'Game of thrones', 'Lord of the rings' etc. is far better than watching the movies, I prefer to watch movies just because it's too scary for me to read those numerous pages. I heard these two quotes from two Indian movies.The second quote is from my favourite hindi movie "Jab we met". I try to make these quotes into reality in my life. One such reality is this page which you are reading. This website is a result of my fascination about the programing world and the internet.  I love writing my thoughts ,ideas and opinions in a sheet of paper. Instead of paper, this time I am going to write it on my webpage. I love science just because I like to ask questions for everything. At this moment, I'm in a long journey to become a better scientist in biology so i would also like share with you about my scientific research. My interest in programing helped me to develop some silly applications which I would like you to try it out and give me suggestions.


Go back to home page
Contacts
Here is our email address and telephone
<EMAIL_ADDRESS><EMAIL_ADDRESS>206-755-5555


I'm A Celeb fans giggle over blended cockroach drink named after Caroline Flack
The presenters' pun had everyone in stitches as they watched the Love Island-themed trial on I'm A Celeb
by Lily Waddell, https://www.mirror.co.uk/authors/lily-waddell/I'm A Celeb viewers were roaring with laughter as a blended cockroach drink was named after Caroline Flack.
During Sunday's installment, Ant McPartlin and Dec Donnelly brought ITV's steamiest show Love Island to the jungle with a few nasty surprises.
Known for their hilarious jokes, it's no wonder the presenters' pun on Caroline Flack's name sent fans into a fit of giggles.
They had dubbed the cockroach smoothie Caroline Yack in tribute to the Love Island host which tickled the sense of humour of viewers.
"CAROLINE YACK IM SCREAMING #ImACeleb#ImACelebrity@carolineflack1 ." One fan wrote, leading the troops.
Ant and Dec were on top form as the Love Island hosts in the I'm A Celeb jungle.
They also named a drink Iain Hurling after voiceover star Iain Stirling which got fans giggling.
Others added: "Caroline Yack. Cocktail in honour of Caroline Flack. Comprised of blended cockroaches. Appropriate."
"Caroline Yack.. #ImACeleb ."
"Caroline yack" and "Ian Hurling" How I love the names they come up with #ImACeleb ."
"Caroline yack cannot make this up #ImACeleb#imacelebrity ."
"Caroline Yack, I can’t breathe. #ImACeleb ."
Despite the trial, Jacqueline Jossa was equally excited on I'm A Celeb when she walked onto the Love Island-style set.
The soap star was the most excited to see the Love Island set - complete with hot tub, fire pit and kitchen - practically dancing on as the show's theme music blared out.
As she skipped in behind Roman Kemp, Jac shouted out. She said: "WAHOO!"
"Oh my god," she gasped as she took in the surroundings.
"I've always wanted to do Love Island!"


TERRAFORMING MARS CARDS LIST
SELECTED
0
AUTOMATED
ACTIVE
EVENTS
CORPS
PRELUDES
COLONIES
GLOBALS
CONTENT
SORT PROJECT CARDS BY
ID
MC UP
MC Down
-
+
M
REQUIREMENTS
VP
-30
0
0
0
0
0
0
0
Imported Hydrogen
16
3
OR
3
* OR
2
*
(Gain 3 Plants, or add 3 Microbes or 2 Animals to ANOTHER card. Place an ocean tile.)
Research Outpost
18
:
-1
(Effect: When you play a card, you pay 1 MC less for it.)
(Place a city tile NEXT TO NO OTHER TILE.)
Phobos Space Haven
25
3
(Increase your titanium production 1 step and place a City tile ON THE RESERVED AREA.)
LOAD MORE


THE STORY OF US
Reviewed by Harvey Karten, Ph.D. Universal Pictures/Castle Rock Entertainment Director: Rob Reiner Writer: Alan Zweibel and Jessie Nelson Cast: Bruce Willis Michelle Pfeiffer, Red Buttons, Julie Hagerty, Jordan Lund, Tim Matheson, Jayne Meadows, Tom Poston, Rob Reiner, Paul Reiser, Jake Sandvig, Betty White, Rita Wilson
Move over Ingmar Bergman. Only a relative handful of American moviegoers ever saw your "Scenes from a Marriage," however honest and searing a portrait that wrenching 168-minute film. Here in America, we have another voice telling us about the disintegration of a marriage, and what's more, he tells all in English so that we don't have to read those pesky titles or hear people like Max von Sydow endlessly drone, "It was the bleak winter following a wet and discouraging summer, a time that Eva was birthing her fourth child and thinking of going away for a spell..."
Just kidding, Ingmar, nobody will compare with you when it comes to depressing the heck out of us about the miseries of matrimony, but even you might get a kick out of Rob Reiner's mixture of comedy and pathos in "The Story of Us."  What's more Reiner coaxes yet another surprisingly adept performance by Bruce Willis who once again does not lay his finger on a gun, and gets some movement from one of my least favorite gorgeous actresses, Michelle Pfeiffer.
"The Story of Us" is about history: not about the sort that begins in Sumer but the history of a marriage: how it begins as two people fall in lust, how, like the good citizens of Sumer and Troy they build something (in this case a couple of model kids), and how like all glorious civilizations they fall apart. The ending is an out-and-out copout, because Reiner is not Bergman and American moviegoers are presumably not as realistic and down-to-earth as Swedes. If you left the theater four minutes before the conclusion, as some did believing that the movie had already run its course, you were lucky to miss the contrived conclusion. Notwithstanding, the picture ranks as a insightful if not brilliant piece of story-telling that does not quite rise to the level of myth. The Big Truth about relationships, though--that honeymoons last for only a year or two--is already too well known by most of us, even if we act as though we'd never heard the concept.
In Alan Zweibel and Jessie Nelson's screenplay, Reiner relates the highs and lows of a 15-year marriage between two people who--by the looks of them--should never have had the troubles they experienced. Unfortunately they each had a different pair of parents who indoctrinated them in distinct ways, so that when one marriage counselor advises that "when you go to bed, there are six people lying with you" and when Reiner graphically illustrates this well-known idea, we get the point.
Reiner uses a stage device sparingly and effectively. From time to time, Katie (Michelle Pfeiffer) and Ben Jordan (Bruce Willis) face the camera separately and tell us in the audience what's on their minds. Each is eager to have the viewers as allies. You can tell from their soliloquies, though, that as much as they expect to split, they dream of reconciling their differences. Katie composes crossword puzzles for her boss while Ben is a novelist. Ben is the more spontaneous person, one who does not even wear a watch, while Katie is more the type who goes through life on schedules.
Each time the two are getting along just fine, one of them says something that sounds to us innocent enough, but that's all it takes to set off another war of the roses. Bruce Willis as Ben and Michelle Pfeiffer as his wife of 15 years, Katie, do not really convince us that what they say can be responsible for these orgies of verbal destruction, but anyone who has been married as long as their characters have been can relate to the fact that just about anything can be used as an excuse to let off steam.
The real fun comes from side characters, though, particularly director Rob Reiner in the role of Ben's best friend. In one discussion, he uses a down-to-earth illustration to prove his point. "Look at me," he suggests to Ben, leaning over. "What do you see?" "Your ass," replies Ben, the seemingly obvious answer. "Wrong.  That is an illusion. This is just the tops of legs butting together--that's why they call it a butt.  Love is lust." When Katie gets together with her best friends, played by Rita Wilson and Julie Hagerty, they too discuss the nature of relationships, taking a similarly pithy route, with even more ribald terminology than that used by the men.
What is most diverting about the flashbacks is the mere sight of the characters as they appeared fifteen years back. Ben, now with thinning hear, sports hippie-ish locks and Katie looks dazzling with her hair long and flowing freely. The scene shot in Venice, where the troubled couple went to try to repair their regressive marriage, is especially convincing and droll, particularly when Ben and Katie meet "the Kirbys from Cleveland," each the epitome of the ugly American.
The tagline for the film is, "Can a marriage survive 15 years of marriage?" Ingmar Bergman and Rob Reiner have different answers, each suitable for his own kind of audience. Bergman's is the more realistic. Reiner's will bring in the box office. So then: "The Story of Us"--a worthwhile feature in the Rob Reiner comic tradition with two perfectly fine performances by Bruce Willis and Michelle Pfeiffer.
Rated R. Running Time: 96 minutes. (C) 1999 Harvey Karten
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


public abstract class SBPBaseSubscriber extends SyncSubscriber
Note:
Subscribers that are part of the SBP must extend this SBPBaseSubscriber. If your agent deals with other SIF objects than the ones defined in the SBP then you should extends the SBPNoDOCSubscriber class for these objects and not this class. If you use this class for any other SIF objects than defined in the SBP the behaviour is unknown, most likely will cause your agent to crash.
| Constructor and Description |
|---|
SBPBaseSubscriber(java.lang.String subscriberID,
openadk.library.ElementDef dtd)
Default constructor
|
| Modifier and Type | Method and Description |
|---|---|
abstract boolean |
doesObjectExistInTargetSystem(java.lang.String sifObjectName,
java.util.List<SIFObjectKey> keyValues,
openadk.library.SIFDataObject sifObject)
This method needs to be implemented by the actual subscriber developer.
|
abstract void |
onKeyError(openadk.library.SIFDataObject sifObject,
openadk.library.Zone zone,
boolean isEvent,
openadk.library.EventAction eventAction,
InvalidKeyException invalidKeyException)
This method is called if the processing of the object failed due to invalid key data.
|
void |
processObjectsWithoutDependencies()
Should be called every so often.
|
void |
requestDependentObjects()
Sends a SIF Query for all dependent objects that are in the cache for this subscriber and application.
|
sync
debugOnEvent, debugOnQueryResults, finalise, getQueryResultsOptions, getSubscriptionOptions, onEvent, onQueryPending, onQueryResults, processEvent, processResponse, provision, reportSIFError, run, setQueryResultsOptions, setSubscriptionOptions, shutdownSubscriber, startConsumers
getAgentConfig, getAgentID, getAgentProperties, getAgentProperty, getApplicationID, getDtd, getFrameworkProperties, getId, getMappings, getZoneByID, getZones, isValidZone, setAgentConfig, setAgentID, setAgentProperties, setApplicationID, setDtd, setFrameworkProperties, setId, setMappings, setZones
public SBPBaseSubscriber(java.lang.String subscriberID, openadk.library.ElementDef dtd) throws java.lang.IllegalArgumentException
Initialises the subscriber and also checks if the object this subscriber is responsible for is supported by the DOC. If not then a IllegalArgumentException is raised and the error is logged.
subscriberID
- The unique ID of the subscriber (ie. StudentPersonalSubscriber).dtd
- The dtd for which this subscriber is responsible for.java.lang.IllegalArgumentException
public abstract boolean doesObjectExistInTargetSystem(java.lang.String sifObjectName, java.util.List<SIFObjectKey> keyValues, openadk.library.SIFDataObject sifObject)
If the DOC is enabled and this method returns TRUE for the given sifObjectName and keyValues then the SIF Object given by the sifObject parameter will be cached and its dependent objects will automatically be requested by an appropriate subscriber (which can be a subscriber in another agent).
The keyValues holds the primary key (name as xpath and value) of the dependent SIF Object. In most cases this is a SIF refId, but in some cases can be something else. The keyValues parameter is a list of key values in case the primary key is made up of a compound key. The list will be in the correct order as defined by the SIF specification.
The parameter sifObjectName and keyValues are extracted from the sifObject. The sifObject is provided for convenience. There might be the need to get other information out of the sifObject parameter to implement this method successfully and therefore the availability of this parameter.
Example of parameters: StudentSchoolEnrollment
For the above example object the 'sifObject' parameter would be StudentSchoolEnrollment object. The 'doesObjectExistInTargetSystem()' method would be called twice for the above object by the SBPBaseSubscriber because there are 2 dependent objects:
- The Student with RefId=D3E34B359D75101A8C3D00AA001A1652
- The School with RefId=A4E33E359D99101A8C3D00AA001BB76E
The sifObjectName and keyValues parameters for the two calls would be:
1st Call (Student): sifObjectName=StudentPersonal
keyValues[0].xpathToKey=@RefId, keyValues[0].keyValue=D3E34B359D75101A8C3D00AA001A1652
2nd Call (School) : sifObjectName=SchoolInfo
keyValues[0].xpathToKey=@RefId, keyValues[0].keyValue=A4E33E359D99101A8C3D00AA001BB76E
sifObjectName
- Name of the dependent SIF Object (i.e. StudentPersonal, SchoolInfo etc).keyValues
- List of key values. Name of Key is an xpath into the dependent SIF Object, value is the
actual value of key as extracted from the sifObject parameter.sifObject
- The SIF Object as delivered from the ZIS.public abstract void onKeyError(openadk.library.SIFDataObject sifObject, openadk.library.Zone zone, boolean isEvent, openadk.library.EventAction eventAction, InvalidKeyException invalidKeyException)
sifObject
- The object that caused the error, i.e. has invalid primary or foreign keys.zone
- The zone from which the object was received.isEvent
- Set to TRUE if the error occurred during event processing. FALSE if the error occurred during response processing.eventAction
- If the error occurred during event processing then this value will hold the event action such as ADD, CHANGE or DELETE.
If the error occurred during response processing then this value will set to null!invalidKeyException
- Holds information about the invalid key(s).public void requestDependentObjects()
This method must only run if this subscriber is responsible for a SIF Object that has other SIF objects with a dependency on this object. For example the StudentPersonal is such an object because a number of other SIF objects depend upon the StudentPersonal such as the StudentSchoolEnrollment, StudentContactRelationship etc.
public void processObjectsWithoutDependencies()