/*
CARNEGIE MELLON UNIVERSITY
NON-EXCLUSIVE END-USER
SOFTWARE LICENSE AGREEMENT
RETSINA(tm)
Reusable Environment for Task Structured Intelligent Network Agents(tm)
IMPORTANT: PLEASE READ THIS SOFTWARE LICENSE AGREEMENT ("AGREEMENT") CAREFULLY.
LICENSE
The CMU Software, together with any fonts accompanying this Agreement, whether
on disk, in read only memory or any other media or in any other form
(collectively, the "CMU Software") is never sold. It is non-exclusively
licensed by Carnegie Mellon University ("CMU") to you solely for your own
internal, non-commercial research purposes on the terms of this Agreement. CMU
retains the ownership of the CMU Software and any subsequent copies of the CMU
Software. The CMU Software and any copies made under this Agreement are subject
to this Agreement.
YOU MAY:
1. LOAD and USE the CMU Software as long as the CMU Software is only
used on one (1) computer by one (1) user at a time. This license does
not allow the CMU Software to exist on more than one (1) computer at
a time or on a computer network, including without limitation an
intranet network or a local area network.
2. USE the CMU Software solely for your own internal, non-commercial
research purposes.
3. COPY the CMU Software for back-up purposes only. You may make one
(1) copy of the CMU Software in machine-readable form for back-up
purposes. The back-up copy must contain all copyright notices
contained in the original CMU Software.
4. TERMINATE this Agreement by destroying the original and all copies
of the CMU Software in whatever form.
YOU MAY NOT:
1. Assign, delegate or otherwise transfer the CMU Software, the
license (including this Agreement), or any rights or obligations
hereunder or thereunder, to another person or entity. Any purported
assignment, delegation or transfer in violation of this provision
shall be void.
2. Loan, distribute, rent, lease, give, sublicense or otherwise
transfer the CMU Software (or any copy of the CMU Software), in whole
or in part, to any other person or entity.
3. Copy, alter, translate, decompile, disassemble, reverse engineer
or create derivative works from the CMU Software, including but not
limited to, modifying the CMU Software to make it operate on non-
compatible hardware.
4. Remove, alter or cause not to be displayed, any copyright notices
or startup messages contained in the CMU Software.
5. Export the CMU Software or the product components in violation of
any United States export laws.
Title to the CMU Software, including the ownership of all copyrights, patents,
trademarks and all other intellectual property rights subsisting in the
foregoing, and all adaptations to and modifications of the foregoing shall at
all times remain with CMU. CMU retains all rights not expressly licensed under
this Agreement. The CMU Software, including any images, graphics, photographs,
animation, video, audio, music and text incorporated therein is owned by CMU or
its suppliers and is protected by United States copyright laws and
international treaty provisions. Except as otherwise expressly provided in
this Agreement, the copying, reproduction, distribution or preparation of
derivative works of the CMU Software is strictly prohibited by such laws and
treaty provisions. Nothing in this Agreement constitutes a waiver of CMU's
rights under United States copyright law.
This Agreement and your rights are governed by the laws of the Commonwealth of
Pennsylvania. If for any reason a court of competent jurisdiction finds any
provision of this Agreement, or portion thereof, to be unenforceable, the
remainder of this Agreement shall continue in full force and effect.
THIS LICENSE SHALL TERMINATE AUTOMATICALLY if you fail to comply with the terms
of this Agreement.
DISCLAIMER OF WARRANTY ON CMU SOFTWARE
You expressly acknowledge and agree that your use of the CMU Software is at
your sole risk.
THE CMU SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, AND CMU
EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
QUALITY AND PERFORMANCE OF THE CMU SOFTWARE IS BORNE BY YOU. THIS DISCLAIMER
OF WARRANTIES, REMEDIES AND LIABILITY ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF
THE AGREEMENT BETWEEN CMU AND YOU. CMU WOULD NOT BE ABLE TO PROVIDE THE CMU
SOFTWARE WITHOUT SUCH LIMITATIONS.
LIMITATION OF LIABILITY
THE CMU SOFTWARE IS BEING PROVIDED TO YOU FREE OF CHARGE. UNDER NO
CIRCUMSTANCES, INCLUDING NEGLIGENCE, SHALL CMU BE LIABLE UNDER ANY THEORY OR
FOR ANY DAMAGES INCLUDING, WITHOUT LIMITATION, DIRECT, INDIRECT, GENERAL,
SPECIAL, CONSEQUENTIAL, INCIDENTAL, EXEMPLARY OR OTHER DAMAGES) ARISING OUT OF
THE USE OF OR INABILITY TO USE THE CMU SOFTWARE OR OTHERWISE RELATING TO THIS
AGREEMENT (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION OR ANY OTHER PECUNIARY
LOSS), EVEN IF CMU HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME
JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
CONSEQUENTIAL DAMAGES SO THIS LIMITATION MAY NOT APPLY TO YOU.
ADDITIONAL PROVISIONS YOU SHOULD BE AWARE OF
This Agreement constitutes the entire agreement between you and CMU regarding
the CMU Software and supersedes any prior representations, understandings and
agreements, either oral or written. No amendment to or modification of this
Agreement will be binding unless in writing and signed by CMU.
U.S. GOVERNMENT RESTRICTED RIGHTS
If the CMU Software or any accompanying documentation is used or acquired by or
on behalf of any unit, division or agency of the United States Government, this
provision applies. The CMU Software and any accompanying documentation is
provided with RESTRICTED RIGHTS. The use, modification, reproduction, release,
display, duplication or disclosure thereof by or on behalf of any unit,
division or agency of the Government is subject to the restrictions set forth
in subdivision (c)(1) of the Commercial Computer Software-Restricted Rights
clause at 48 CFR 52.227-19 and the restrictions set forth in the Rights in
Technical Data-Non-Commercial Items clause set forth in 48 CFR
252.227-7013. The contractor/manufacturer of the CMU Software and accompanying
documentation is Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh,
Pennsylvania 15213, U.S.A.
*/
/* Copyright (c) 1998, Dirk Kalp, Katia Sycara, RETSINA Project,
Carnegie Mellon University
All rights reserved
*/
/*----------------------------------------------------------------------------
HISTORY:
Spring/Summer 1998 Dirk Kalp (kalp@cs.cmu.edu)
Created the module.
Dec 03 1998 Dirk Kalp (kalp@cs.cmu.edu)
Added this HISTORY log.
----------------------------------------------------------------------------*/
package EDU.cmu.softagents.retsina.Communicator;
/** Keeping a log of the msgs an agent sends to or receives from
other agents is a service the Communicator can provide. To do
this, the Communicator expects that a logging facility exists
outside the Communicator to handle the actual details of msg
logging. The Communicator defines a standard interface, the
MsgLogInterface given here, by which it will provide to a
logging facility the msgs to be logged. The logging facility
must implement this interface. When the Communicator is
instantiated, a reference to the logging facility is passed to
it. In fact, the Commuincator receives a list of logging
facilities since there may be a desire to support different
kinds of logging (eg., to a file, to a graphical display, to a
logging agent, etc.).
MsgLogInterface provides a set of methods for establishing
and invoking standard facilities for logging agent to agent
msg traffic into and/or out of an agent. A logging facility
will implement this interface. If the logging facility has an
associated external logging agent to which the log msgs are sent,
then the constructor of the logging facility that implements this
MsgLogInterface should provide for access to the Communicator so
that the logs can be transmitted to the logging agent. Furthermore,
if the logging facility wishes to provide control of logging (eg.,
^Q, ^S) to the logging agent, then the constructor of the logging
facility should also create a thread to receive and handle these
control msgs from the logging agent. One way to receive such
control msgs is to establish a queue for them to be routed to
using the Communicator's routeInputMsgs() method. This establishes
a special reply-with ID that the logging agent uses in its control
msgs. The Communicator will recognize this reply-with ID and use
it to route the msgs to the queue from which thsy are processed
by the log facility's thread.
*/
public interface MsgLogInterface {
/** This method will be called by the Communicator at startup to
initialize the logging facility. The Communicator passes a
reference to itself to provide the means for the logging
facility to communicate with an associated logging agent, if
one exists. The logging agent would receive all the msgs to
be logged and could also send cmds to the logging facility to
control the logging. The name of the agent whose msgs are being
logged is also passed in as an arg by the Communicator. Returns
true if the logging facility was successfully initialized, false
otherwise.
*/
public boolean logInit(String agentName, String agentInfo, Communicator comm);
/** This method is used to record a msg that the agent has sent
to another agent. The method may write the msg to a file, send
it to some msg logging agent, etc. It may also perform no logging
directly if the instantiated logging facility creates its own
thread and has an associated external logging agent to which it
sends msgs for logging. With this arrangement, the logging agent
can send cmds to the logging facility's thread to control logging
activity with its own agreed upon set of cmds such as suspend/resume
logging of msgs. Return true on success, false otherwise.
*/
public boolean logMsgSentByAgent(InternalMsg msg);
/** This method is used to record a msg that the agent has received
from another agent. The method may write the msg to a file, send
it to some msg logging agent, etc. It may also perform no logging
directly if the instantiated logging facility creates its own
thread and has an associated external logging agent to which it
sends msgs for logging. With this arrangement, the logging agent
can send cmds to the logging facility's thread to control logging
activity with its own agreed upon set of cmds such as suspend/resume
logging of msgs. Return true on success, false otherwise.
*/
public boolean logMsgRcvdByAgent(InternalMsg msg);
/** This method will be called by the Communicator when the agent
comes up and announces the agent birth to the logging facility
to mark the beginning of the msg log. Return true on success, false
otherwise.
*/
public boolean logAgentBirth();
/** This method will be called through the Communicator by the agent or
application using the Communicator to log transitions in the state
of the agent or application. In an agent, especially a multithreaded
one, it allows for the activities of the various components of the
agent to record their activities. This is usefule in tracing or in
displaying the type and patterns of activities that the agent performs.
*/
public boolean logAgentState(String component, String state);
/** This method will be called by the Communicator when the agent
terminates and announces the agent death to the logging facility
to mark the ending of the msg log. Return true on success, false
otherwise.
*/
public boolean logAgentDeath();
/** This method returns the name of the logging facility.
*/
public String getLogFacilityName();
/** This method returns the name of the external logging agent to
which the log msgs are sent. If there is no associated logging
agent, null is returned. This method is used by the Communicator
to discover the names of all logging agents so it can avoid the
viscious cycle of performing logging of msgs sent to logging agents.
The Communicator will not log msgs to/from any logging agent.
*/
public String getLoggingAgentName();
}