public class KnowledgeBase extends MadaraJNI
Modifier and Type | Class and Description |
---|---|
static class |
KnowledgeBase.CompiledExpression
Compiled, optimized KaRL logic.
|
class |
KnowledgeBase.KnowledgeBaseLockedException
KnowledgeBaseLockedException will be thrown if methods are called from inside a MadaraFunction
|
Constructor and Description |
---|
KnowledgeBase()
Creates a KnowledgeBase with default settings
|
KnowledgeBase(KnowledgeBase original)
Copy constructor
|
KnowledgeBase(java.lang.String host,
TransportSettings config)
Creates a KnowledgeBase
|
KnowledgeBase(java.lang.String host,
TransportType transport,
java.lang.String domain)
Creates a KnowledgeBase
|
Modifier and Type | Method and Description |
---|---|
void |
attachLogger(Logger logger)
Attaches a logger that will manage all output from the KnowledgeBase
|
void |
attachTransport(java.lang.String id,
TransportSettings settings)
Attaches a new transport to the Knowledge Base
|
void |
clear()
Clears the knowledge base.
|
void |
clearModifieds()
Clears all modified variables that were going to be sent with next call
to sendModifieds (also a part of eval, set, wait and similar functions)
|
void |
closeTransports()
Closes any transports attached to the Knowledge Base
|
KnowledgeBase.CompiledExpression |
compile(java.lang.String expression)
Compiles a KaRL expression into an expression tree.
|
java.lang.String |
debugModifieds()
Retrieves a stringified list of all modified variables that are ready
to send over transport on next send_modifieds call
|
void |
defineFunction(java.lang.String name,
MadaraFunction function)
Currently unsupported
Defines a function. |
void |
defineFunction(java.lang.String name,
java.lang.String expression)
Defines a MADARA KaRL function.
|
KnowledgeRecord |
evaluate(KnowledgeBase.CompiledExpression expression)
Evaluates an expression.
|
KnowledgeRecord |
evaluate(KnowledgeBase.CompiledExpression expression,
EvalSettings evalSettings)
Evaluates an expression.
|
KnowledgeRecord |
evaluate(java.lang.String expression)
Evaluates an expression.
|
KnowledgeRecord |
evaluate(java.lang.String expression,
EvalSettings evalSettings)
Evaluates an expression.
|
void |
evaluateNoReturn(KnowledgeBase.CompiledExpression expression)
Evaluates an expression.
|
void |
evaluateNoReturn(KnowledgeBase.CompiledExpression expression,
EvalSettings evalSettings)
Evaluates an expression.
|
void |
evaluateNoReturn(java.lang.String expression)
Evaluates an expression.
|
void |
evaluateNoReturn(java.lang.String expression,
EvalSettings evalSettings)
Evaluates an expression.
|
boolean |
exists(java.lang.String name)
Checks to see if record exists
|
protected void |
finalize()
Cleans up underlying C resources
|
void |
free()
Deletes the C++ instantiation.
|
static KnowledgeBase |
fromPointer(long cptr)
Creates a java object instance from a C/C++ pointer
|
static KnowledgeBase |
fromPointer(long cptr,
boolean shouldManage)
Creates a java object instance from a C/C++ pointer
|
KnowledgeRecord |
get(java.lang.String name)
Retrieves a knowledge value.
|
java.lang.String |
getID()
Get KnowledgeBase ID
|
Logger |
getLogger()
Returns the logger that manages all output from the KnowledgeBase
|
long |
loadContext(java.lang.String filename,
boolean useId,
EvalSettings settings)
Loads the knowledge base from a file
|
void |
print()
Prints all knowledge in knowledge base
|
void |
print(java.lang.String statement)
Prints a statement with variable expansion
|
long |
saveAsKarl(java.lang.String filename)
Saves the knowledge base to a file in a human-readable format
that can be read in with evaluate or wait statements.
|
long |
saveCheckpoint(java.lang.String filename,
boolean resetModifieds)
Saves a snapshot of changes to the context since the last saveContext,
saveCheckpoint, or sendModifieds.
|
long |
saveContext(java.lang.String filename)
Saves the knowledge base to a file
|
void |
sendModifieds()
Sends all modifications to global variables since last send modifieds,
eval, wait, or set statement.
|
void |
sendModifieds(EvalSettings settings)
Sends all modifications to global variables since last send modifieds,
eval, wait, or set statement.
|
void |
set(java.lang.String name,
double value)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
double[] value)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
double[] value,
EvalSettings settings)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
double value,
EvalSettings settings)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
long value)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
long[] value)
Sets a knowledge variable to a specified long array.
|
void |
set(java.lang.String name,
long[] value,
EvalSettings settings)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
long value,
EvalSettings settings)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
java.lang.String value)
Sets a knowledge value to a specified value.
|
void |
set(java.lang.String name,
java.lang.String value,
EvalSettings settings)
Sets a knowledge value to a specified value.
|
void |
setFile(java.lang.String name,
byte[] value)
Sets a knowledge variable to a specified byte array.
|
void |
setFile(java.lang.String name,
byte[] value,
EvalSettings settings)
Sets a knowledge variable to a specified file byte array.
|
void |
setImage(java.lang.String name,
byte[] value)
Sets a knowledge variable to a specified byte array.
|
void |
setImage(java.lang.String name,
byte[] value,
EvalSettings settings)
Sets a knowledge variable to a specified image byte array.
|
static void |
setLogLevel(MadaraLog.MadaraLogLevel logLevel)
Sets the log level to dictate the detail of MADARA logging.
|
KnowledgeList |
toKnowledgeList(java.lang.String subject,
int start,
int end)
Fills a
KnowledgeList with
KnowledgeRecords that begin with
a common subject and have a finite range of integer values. |
KnowledgeMap |
toKnowledgeMap(java.lang.String expression)
Fills a
KnowledgeMap with
KnowledgeRecords that match an expression. |
KnowledgeMap |
toKnowledgeMap(java.lang.String prefix,
java.lang.String suffix)
Fills a
KnowledgeMap with
KnowledgeRecords that match a prefix and
suffix. |
java.lang.String |
toString()
Prints the knowledge base to a string for debugging purposes
|
java.lang.String |
toString(java.lang.String arrayDelimiter,
java.lang.String recordDelimiter,
java.lang.String keyvalDelimiter)
Prints the knowledge base to a string for debugging purposes
|
KnowledgeRecord |
wait(KnowledgeBase.CompiledExpression expression)
Waits for an expression to be non-zero.
|
KnowledgeRecord |
wait(KnowledgeBase.CompiledExpression expression,
WaitSettings settings)
Waits for an expression to be non-zero.
|
KnowledgeRecord |
wait(java.lang.String expression)
Waits for an expression to be non-zero.
|
KnowledgeRecord |
wait(java.lang.String expression,
WaitSettings settings)
Waits for an expression to be non-zero.
|
void |
waitNoReturn(KnowledgeBase.CompiledExpression expression)
Waits for an expression to be non-zero.
|
void |
waitNoReturn(KnowledgeBase.CompiledExpression expression,
WaitSettings settings)
Waits for an expression to be non-zero.
|
void |
waitNoReturn(java.lang.String expression)
Waits for an expression to be non-zero.
|
void |
waitNoReturn(java.lang.String expression,
WaitSettings settings)
Waits for an expression to be non-zero.
|
public KnowledgeBase()
public KnowledgeBase(java.lang.String host, TransportType transport, java.lang.String domain)
host
- hostname/ip of this machinetransport
- to use for knowledge disseminationdomain
- knowledge domain we want to joinpublic KnowledgeBase(java.lang.String host, TransportSettings config)
host
- hostname/ip of this machineconfig
- transport settings to use for disseminationpublic KnowledgeBase(KnowledgeBase original)
original
- knowledge base to copy frompublic static KnowledgeBase fromPointer(long cptr)
cptr
- C pointer to the objectpublic static KnowledgeBase fromPointer(long cptr, boolean shouldManage)
cptr
- C pointer to the objectshouldManage
- if true, manage the pointerpublic java.lang.String getID()
public KnowledgeRecord evaluate(java.lang.String expression)
() KnowledgeRecord.free ()
)
at some point. If it is to be ignored, consider using (String)
expression
- KaRL expression to evaluateKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void evaluateNoReturn(java.lang.String expression)
expression
- KaRL expression to evaluateKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord evaluate(java.lang.String expression, EvalSettings evalSettings)
() KnowledgeRecord.free ()
) at some point. If
it is to be ignored, consider using (String,EvalSettings)
expression
- KaRL expression to evaluateevalSettings
- Settings for evaluating and printingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void evaluateNoReturn(java.lang.String expression, EvalSettings evalSettings)
expression
- KaRL expression to evaluateevalSettings
- evalSettings Settings for evaluating and printingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord evaluate(KnowledgeBase.CompiledExpression expression)
() KnowledgeRecord.free ()
) at some point. If
it is to be ignored, consider using (CompiledExpression)
expression
- KaRL expression to evaluate (result of (String)
)KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void evaluateNoReturn(KnowledgeBase.CompiledExpression expression)
expression
- KaRL expression to evaluate (result of (String)
)KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord evaluate(KnowledgeBase.CompiledExpression expression, EvalSettings evalSettings)
() KnowledgeRecord.free ()
) at some point. If
it is to be ignored, consider using (CompiledExpression,EvalSettings)
expression
- KaRL expression to evaluate (result of (String)
)evalSettings
- Settings for evaluating and printingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void evaluateNoReturn(KnowledgeBase.CompiledExpression expression, EvalSettings evalSettings)
expression
- KaRL expression to evaluate (result of (String)
)evalSettings
- Settings for evaluating and printingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeBase.CompiledExpression compile(java.lang.String expression)
expression
- expression to compileCompiledExpression
: compiled, optimized expression treeKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void defineFunction(java.lang.String name, MadaraFunction function)
name
- name of the functionfunction
- Implementation of MadaraFunctionKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void attachLogger(Logger logger)
logger
- a logger to use for managing information and debuggingpublic void attachTransport(java.lang.String id, TransportSettings settings)
id
- unique identifier for this agentsettings
- settings for the new transportpublic Logger getLogger()
public java.lang.String debugModifieds()
public void closeTransports()
public void defineFunction(java.lang.String name, java.lang.String expression)
name
- name of the functionexpression
- KaRL function bodyKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void clear()
KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic boolean exists(java.lang.String name)
name
- name of record to checkpublic KnowledgeRecord get(java.lang.String name)
name
- knowledge nameKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, long value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, double value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, java.lang.String value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, double[] value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, long[] value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void setFile(java.lang.String name, byte[] value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void setImage(java.lang.String name, byte[] value)
name
- knowledge namevalue
- value to setKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, long value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, double value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, java.lang.String value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, double[] value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void set(java.lang.String name, long[] value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void setFile(java.lang.String name, byte[] value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void setImage(java.lang.String name, byte[] value, EvalSettings settings)
name
- knowledge namevalue
- value to setsettings
- settings for evaluating the set commandKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void sendModifieds()
public void clearModifieds()
public void sendModifieds(EvalSettings settings)
settings
- settings to use for considering records to sendpublic void print(java.lang.String statement)
statement
- The statement to printpublic void print()
public void free()
KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionprotected void finalize() throws java.lang.Throwable
finalize
in class java.lang.Object
java.lang.Throwable
- necessary for override but unusedpublic KnowledgeRecord wait(java.lang.String expression)
() KnowledgeRecord.free ()
)
at some point. If it is to be ignored, consider using (String)
expression
- KaRL expression to evaluateKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord wait(KnowledgeBase.CompiledExpression expression)
() KnowledgeRecord.free ()
)
at some point. If it is to be ignored, consider using (CompiledExpression)
expression
- KaRL expression to evaluate (result of (String)
)KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord wait(java.lang.String expression, WaitSettings settings)
() KnowledgeRecord.free ()
)
at some point. If it is to be ignored, consider using (String,WaitSettings)
expression
- KaRL expression to evaluatesettings
- Settings for waitingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeRecord wait(KnowledgeBase.CompiledExpression expression, WaitSettings settings)
() KnowledgeRecord.free ()
)
at some point. If it is to be ignored, consider using (CompiledExpression,WaitSettings)
expression
- KaRL expression to evaluate (result of (String)
)settings
- Settings for waitingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void waitNoReturn(java.lang.String expression)
expression
- KaRL expression to evaluateKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void waitNoReturn(KnowledgeBase.CompiledExpression expression)
expression
- KaRL expression to evaluate (result of (String)
)KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void waitNoReturn(java.lang.String expression, WaitSettings settings)
expression
- KaRL expression to evaluatesettings
- Settings for waitingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic void waitNoReturn(KnowledgeBase.CompiledExpression expression, WaitSettings settings)
expression
- KaRL expression to evaluate (result of (String)
)settings
- Settings for waitingKnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeList toKnowledgeList(java.lang.String subject, int start, int end)
KnowledgeList
with
KnowledgeRecords
that begin with
a common subject and have a finite range of integer values.
KnowledgeList
must be freed using KnowledgeList.free ()
before the object goes out of scope.subject
- The common subject of the variable names. For instance,
if we are looking for a range of vars like "var0", "var1",
"var2", then the common subject would be "var".start
- An inclusive start indexend
- An inclusive end indexKnowledgeList
containing the
requested KnowledgeRecords
KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic long saveContext(java.lang.String filename)
filename
- the file to save the knowledge base topublic long saveAsKarl(java.lang.String filename)
filename
- the file to save the knowledge base topublic long loadContext(java.lang.String filename, boolean useId, EvalSettings settings)
filename
- the file to load the knowledge base fromuseId
- if true, read the unique ID from the file. If false, do not
use the unique ID from the file.settings
- the settings for updating values in the context from filepublic long saveCheckpoint(java.lang.String filename, boolean resetModifieds)
filename
- the file to save the knowledge base changes toresetModifieds
- if true, clear the modification list (this is a
bad idea if you should be sending modifications over a transport
as well as saving them to a file.public KnowledgeMap toKnowledgeMap(java.lang.String expression)
KnowledgeMap
with
KnowledgeRecords
that match an expression.
KnowledgeMap
must be freed using KnowledgeMap.free ()
before the object goes out of scope.expression
- An expression that matches the variable names that
are of interest. Wildcards may only be at the endKnowledgeMap
containing the
requested KnowledgeRecords
KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic KnowledgeMap toKnowledgeMap(java.lang.String prefix, java.lang.String suffix)
KnowledgeMap
with
KnowledgeRecords
that match a prefix and
suffix.
KnowledgeMap
must be freed using KnowledgeMap.free ()
before the object goes out of scope.prefix
- the prefix of the variables (e.g., in "{prefix}*{suffix}")suffix
- the suffix of the variables (e.g., in "{prefix}*{suffix}")KnowledgeMap
containing the
requested KnowledgeRecords
KnowledgeBase.KnowledgeBaseLockedException
- If called from a MadaraFunctionpublic java.lang.String toString()
public java.lang.String toString(java.lang.String arrayDelimiter, java.lang.String recordDelimiter, java.lang.String keyvalDelimiter)
arrayDelimiter
- delimiter to use between array elementsrecordDelimiter
- delimiter to use in between recordskeyvalDelimiter
- delimiter to use in between keys and valuespublic static void setLogLevel(MadaraLog.MadaraLogLevel logLevel)
logLevel
- The log level to set