interface design
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 7548
GnuPG::Interface 0.33
GnuPG::Interface is a Perl interface to GnuPG. more>>
GnuPG::Interface is a Perl interface to GnuPG.
SYNOPSIS
# A simple example
use IO::Handle;
use GnuPG::Interface;
# settting up the situation
my $gnupg = GnuPG::Interface->new();
$gnupg->options->hash_init( armor => 1,
homedir => /home/foobar );
# Note you can set the recipients even if you arent encrypting!
$gnupg->options->push_recipients( ftobin@cpan.org );
$gnupg->options->meta_interactive( 0 );
# how we create some handles to interact with GnuPG
my $input = IO::Handle->new();
my $output = IO::Handle->new();
my $handles = GnuPG::Handles->new( stdin => $input,
stdout => $output );
# Now well go about encrypting with the options already set
my @plaintext = ( foobar );
my $pid = $gnupg->encrypt( handles => $handles );
# Now we write to the input of GnuPG
print $input @plaintext;
close $input;
# now we read the output
my @ciphertext = ;
close $output;
waitpid $pid, 0;
GnuPG::Interface and its associated modules are designed to provide an object-oriented method for interacting with GnuPG, being able to perform functions such as but not limited to encrypting, signing, decryption, verification, and key-listing parsing.
How Data Member Accessor Methods are Created
Each module in the GnuPG::Interface bundle relies on Class::MethodMaker to generate the get/set methods used to set the objects data members. This is very important to realize. This means that any data member which is a list has special methods assigned to it for pushing, popping, and clearing the list.
Understanding Bidirectional Communication
It is also imperative to realize that this package uses interprocess communication methods similar to those used in IPC::Open3 and "Bidirectional Communication with Another Process" in perlipc, and that users of this package need to understand how to use this method because this package does not abstract these methods for the user greatly. This package is not designed to abstract this away entirely (partly for security purposes), but rather to simply help create proper, clean calls to GnuPG, and to implement key-listing parsing. Please see "Bidirectional Communication with Another Process" in perlipc to learn how to deal with these methods.
Using this package to do message processing generally invovlves creating a GnuPG::Interface object, creating a GnuPG::Handles object, setting some options in its options data member, and then calling a method which invokes GnuPG, such as clearsign. One then interacts with with the handles appropriately, as described in "Bidirectional Communication with Another Process" in perlipc.
<<lessSYNOPSIS
# A simple example
use IO::Handle;
use GnuPG::Interface;
# settting up the situation
my $gnupg = GnuPG::Interface->new();
$gnupg->options->hash_init( armor => 1,
homedir => /home/foobar );
# Note you can set the recipients even if you arent encrypting!
$gnupg->options->push_recipients( ftobin@cpan.org );
$gnupg->options->meta_interactive( 0 );
# how we create some handles to interact with GnuPG
my $input = IO::Handle->new();
my $output = IO::Handle->new();
my $handles = GnuPG::Handles->new( stdin => $input,
stdout => $output );
# Now well go about encrypting with the options already set
my @plaintext = ( foobar );
my $pid = $gnupg->encrypt( handles => $handles );
# Now we write to the input of GnuPG
print $input @plaintext;
close $input;
# now we read the output
my @ciphertext = ;
close $output;
waitpid $pid, 0;
GnuPG::Interface and its associated modules are designed to provide an object-oriented method for interacting with GnuPG, being able to perform functions such as but not limited to encrypting, signing, decryption, verification, and key-listing parsing.
How Data Member Accessor Methods are Created
Each module in the GnuPG::Interface bundle relies on Class::MethodMaker to generate the get/set methods used to set the objects data members. This is very important to realize. This means that any data member which is a list has special methods assigned to it for pushing, popping, and clearing the list.
Understanding Bidirectional Communication
It is also imperative to realize that this package uses interprocess communication methods similar to those used in IPC::Open3 and "Bidirectional Communication with Another Process" in perlipc, and that users of this package need to understand how to use this method because this package does not abstract these methods for the user greatly. This package is not designed to abstract this away entirely (partly for security purposes), but rather to simply help create proper, clean calls to GnuPG, and to implement key-listing parsing. Please see "Bidirectional Communication with Another Process" in perlipc to learn how to deal with these methods.
Using this package to do message processing generally invovlves creating a GnuPG::Interface object, creating a GnuPG::Handles object, setting some options in its options data member, and then calling a method which invokes GnuPG, such as clearsign. One then interacts with with the handles appropriately, as described in "Bidirectional Communication with Another Process" in perlipc.
Download (0.037MB)
Added: 2006-08-04 License: Perl Artistic License Price:
1176 downloads
X Interface Monitor 1.8.4
X Interface Monitor monitors any network interface for traffic, load average, and various other statistics. more>>
X Interface Monitor (abbriviated xifmon) monitors any network interface (most suitable, the ppp# interface) for traffic, load average, and various other statistics using purly ioctl() directly to the Linux kernel.
It also has options to run `connect and `disconnect scripts, for dialup modem users who want easy connecting and disconnecting.
<<lessIt also has options to run `connect and `disconnect scripts, for dialup modem users who want easy connecting and disconnecting.
Download (0.49MB)
Added: 2005-10-13 License: GPL (GNU General Public License) Price:
1477 downloads
Class::Interfaces 0.04
Class::Interfaces is a Per module for defining interface classes inline. more>>
Class::Interfaces is a Per module for defining interface classes inline.
SYNOPSIS
# define some simple interfaces
use Class::Interfaces (
Serializable => [ pack, unpack ],
Printable => [ toString ],
Iterable => [ iterator ],
Iterator => [ hasNext, next ]
);
# or some more complex ones ...
# interface can also inherit from
# other interfaces using this form
use Class::Interfaces (
BiDirectionalIterator => {
isa => Iterator,
methods => [ hasPrev, prev ]
},
ResetableIterator => {
isa => Iterator,
methods => [ reset ]
},
# we even support multiple inheritance
ResetableBiDirectionalIterator => {
isa => [ ResetableIterator, BiDirectionalIterator ]
}
);
# it is also possible to create an
# empty interface, sometimes called
# a marker interface
use Class::Interfaces (
JustAMarker => undef
);
This module provides a simple means to define abstract class interfaces, which can be used to program using the concepts of interface polymorphism.
<<lessSYNOPSIS
# define some simple interfaces
use Class::Interfaces (
Serializable => [ pack, unpack ],
Printable => [ toString ],
Iterable => [ iterator ],
Iterator => [ hasNext, next ]
);
# or some more complex ones ...
# interface can also inherit from
# other interfaces using this form
use Class::Interfaces (
BiDirectionalIterator => {
isa => Iterator,
methods => [ hasPrev, prev ]
},
ResetableIterator => {
isa => Iterator,
methods => [ reset ]
},
# we even support multiple inheritance
ResetableBiDirectionalIterator => {
isa => [ ResetableIterator, BiDirectionalIterator ]
}
);
# it is also possible to create an
# empty interface, sometimes called
# a marker interface
use Class::Interfaces (
JustAMarker => undef
);
This module provides a simple means to define abstract class interfaces, which can be used to program using the concepts of interface polymorphism.
Download (0.006MB)
Added: 2006-10-05 License: Perl Artistic License Price:
1115 downloads
VIDeo Interface for *niX 1.0.0
VIDeo Interface for *niX (VIDIX) is a portable interface to userspace drivers to provide DGA everywhere possible. more>>
VIDeo Interface for *niX (VIDIX) is a portable interface to userspace drivers to provide DGA everywhere possible. VIDIX is portable interface which was designed and introduced as interface to userspace drivers to provide DGA everywhere where its possible.
Enhancements:
- warnings suppressing
- fixes and improvements
- Win32 related improvements
- h/w revision detection for cle266 chipset
- support for Geforce FX5500
- added vt8378 chipset as unichrome driver
<<lessEnhancements:
- warnings suppressing
- fixes and improvements
- Win32 related improvements
- h/w revision detection for cle266 chipset
- support for Geforce FX5500
- added vt8378 chipset as unichrome driver
Download (0.31MB)
Added: 2007-04-07 License: LGPL (GNU Lesser General Public License) Price:
934 downloads
Imager::interface.pod 0.54
Imager::interface.pod decribes the C level virtual image interface. more>>
Imager::interface.pod decribes the C level virtual image interface.
The Imager virtual interface aims to allow image types to be created for special purposes, both to allow consistent access to images with different sample sizes, and organizations, but also to allow creation of synthesized or virtual images.
This is a C level interface rather than Perl.
<<lessThe Imager virtual interface aims to allow image types to be created for special purposes, both to allow consistent access to images with different sample sizes, and organizations, but also to allow creation of synthesized or virtual images.
This is a C level interface rather than Perl.
Download (0.83MB)
Added: 2006-10-27 License: Perl Artistic License Price:
1092 downloads
Perlbug::Interface::Web 2.93
Perlbug::Interface::Web is a web interface to perlbug database. more>>
Perlbug::Interface::Web is a web interface to perlbug database.
SYNOPSIS
my $o_web = Perlbug::Interface::Web->new;
print $o_web->top;
print $o_web->request(help);
print $o_web->links;
METHODS
new
Create new Perlbug::Interface::Web object.
my $web = Perlbug::Interface::Web->new;
setup
Setup Perlbug::Interface::Web
$o_web->setup($cgi);
check_user
Access authentication via http, we just prime ourselves with data from the db as well.
menus
Return menu of system, designed for vertical format. Wraps logo, title and links
print $o_web->menus();
logo
Return logo of system with href=hard_wired_url
print $o_web->logo();
get_title
Return title of current page
print $o_web->get_title();
summary
Return summary of open/closed bugs
print $o_web->summary();
links
Return links of system, with adminfaq inserted if appropriate, configured links and object search forms.
print $o_web->links();
index
Display the index results here...
get_request
Return the req value for this request
my $req = $self->get_request;
set_command
Set the command type for the rest of the process, based on the input and operation
my $cmd = $o_web->set_command($req);
commands
Return command menu buttons for request given
print $o_web->commands($req);
switch
Return appropriate method call for request(else index), using internal CGI object
my $method = $o_web->switch([$req]); # set $method=($call|index)
start
Return appropriate start header data for web request, includes start table.
print $o_web->start();
form
Return form with appropriate name and target etc.
print $o_web->form(menus);
top
Return consistent top of page.
print $o_web->top($req, $cmd);
request
Handle all web requests (internal print)
$o_web->request($call);
target2file
Return appropriate dir/file.ext for given target string
my $filename = $o_base->target2file(header);
# -> /home/richard/web/header.html
finish
Return appropriate finishing html
Varies with framed, includes table finish
print $o_web->finish($req);
overview
Wrapper for doo method
graph
Display pie or mixed graph for groups of bugs etc., mixed to come.
date
Wrapper for search by date access
create
Wrapper for object creation
$o_web->create($obj, %data);
object_handler
Wrapper for object access: no ids = search form
$o_web->object_handler($me_thod, $oid); # o_cgi comes from the heavens
hist
History mechanism for bugs and users.
Move formatting to Formatter::history !!!
headers
Headers for all objects (message, note, ...) by id
$o_web->headers(patch, $id);
bidmid
Wrapper for bugid and messageid access
spec
Returns specifications for the Perlbug system.
$dynamic =~ s/ />/g;
$dynamic =~ s/b(http:.+?perlbug.cgi)b/$1/gi;
$dynamic =~ s/b([ |&.t;]+@.+?.(?:com|org|net|edu))b/$1/gi;
webhelp
Web based help for perlbug.
print $web->webhelp;
mailhelp
Web based mail help for perlbug.
print $web->mailhelp;
delete
Wrapper for delete access
sql
Open field sql query processor
todo
To do list, may be appended to
adminfaq
adminFAQ
web_query
Form bugid search web query results
# results - dont map to query() unless Base::query modified
search
Construct search form
with chosen params as defaults...
update
For all application objects, wraps to object_handler
$o_web->update(); # args ignored here for passing purposes
current_buttons
Get and set array of relevant buttons by context key
my @buttons = $o_web->current_buttons(search update reset, scalar(@uids), [$colspan]);
case
Handle case sensitivity from web search form.
format_query
Produce SQL query for bug search from cgi query.
Can be optimised somewhat ...
my $query = $web->format_query;
wildcard
Convert * into % for sqlquery
my $string = $self->wildcard(5.*);
tenify
Create range of links to split (by tens or more) bugids from web query result.
$self->tenify(@_bids, bug, 7); # in chunks of 7
<<lessSYNOPSIS
my $o_web = Perlbug::Interface::Web->new;
print $o_web->top;
print $o_web->request(help);
print $o_web->links;
METHODS
new
Create new Perlbug::Interface::Web object.
my $web = Perlbug::Interface::Web->new;
setup
Setup Perlbug::Interface::Web
$o_web->setup($cgi);
check_user
Access authentication via http, we just prime ourselves with data from the db as well.
menus
Return menu of system, designed for vertical format. Wraps logo, title and links
print $o_web->menus();
logo
Return logo of system with href=hard_wired_url
print $o_web->logo();
get_title
Return title of current page
print $o_web->get_title();
summary
Return summary of open/closed bugs
print $o_web->summary();
links
Return links of system, with adminfaq inserted if appropriate, configured links and object search forms.
print $o_web->links();
index
Display the index results here...
get_request
Return the req value for this request
my $req = $self->get_request;
set_command
Set the command type for the rest of the process, based on the input and operation
my $cmd = $o_web->set_command($req);
commands
Return command menu buttons for request given
print $o_web->commands($req);
switch
Return appropriate method call for request(else index), using internal CGI object
my $method = $o_web->switch([$req]); # set $method=($call|index)
start
Return appropriate start header data for web request, includes start table.
print $o_web->start();
form
Return form with appropriate name and target etc.
print $o_web->form(menus);
top
Return consistent top of page.
print $o_web->top($req, $cmd);
request
Handle all web requests (internal print)
$o_web->request($call);
target2file
Return appropriate dir/file.ext for given target string
my $filename = $o_base->target2file(header);
# -> /home/richard/web/header.html
finish
Return appropriate finishing html
Varies with framed, includes table finish
print $o_web->finish($req);
overview
Wrapper for doo method
graph
Display pie or mixed graph for groups of bugs etc., mixed to come.
date
Wrapper for search by date access
create
Wrapper for object creation
$o_web->create($obj, %data);
object_handler
Wrapper for object access: no ids = search form
$o_web->object_handler($me_thod, $oid); # o_cgi comes from the heavens
hist
History mechanism for bugs and users.
Move formatting to Formatter::history !!!
headers
Headers for all objects (message, note, ...) by id
$o_web->headers(patch, $id);
bidmid
Wrapper for bugid and messageid access
spec
Returns specifications for the Perlbug system.
$dynamic =~ s/ />/g;
$dynamic =~ s/b(http:.+?perlbug.cgi)b/$1/gi;
$dynamic =~ s/b([ |&.t;]+@.+?.(?:com|org|net|edu))b/$1/gi;
webhelp
Web based help for perlbug.
print $web->webhelp;
mailhelp
Web based mail help for perlbug.
print $web->mailhelp;
delete
Wrapper for delete access
sql
Open field sql query processor
todo
To do list, may be appended to
adminfaq
adminFAQ
web_query
Form bugid search web query results
# results - dont map to query() unless Base::query modified
search
Construct search form
with chosen params as defaults...
update
For all application objects, wraps to object_handler
$o_web->update(); # args ignored here for passing purposes
current_buttons
Get and set array of relevant buttons by context key
my @buttons = $o_web->current_buttons(search update reset, scalar(@uids), [$colspan]);
case
Handle case sensitivity from web search form.
format_query
Produce SQL query for bug search from cgi query.
Can be optimised somewhat ...
my $query = $web->format_query;
wildcard
Convert * into % for sqlquery
my $string = $self->wildcard(5.*);
tenify
Create range of links to split (by tens or more) bugids from web query result.
$self->tenify(@_bids, bug, 7); # in chunks of 7
Download (0.49MB)
Added: 2007-07-31 License: Perl Artistic License Price:
816 downloads
GNOME Interface for YUM 0.1.5
GNOME Interface for YUM is a graphical frame-program for easier use and setup the YUM install program. more>>
GNOME Interface for YUM is a graphical frame-program for easier use and setup the YUM install program.
Displays the accessible packages on the package service sites with filter. Manage the settings of package services.
Manage the cache used by YUM: free up disk space, manual install and transfer of downloaded packages. Displays detailed package information about the installed packages or package files. Displays the files in the packages with a program chosen by user.
<<lessDisplays the accessible packages on the package service sites with filter. Manage the settings of package services.
Manage the cache used by YUM: free up disk space, manual install and transfer of downloaded packages. Displays detailed package information about the installed packages or package files. Displays the files in the packages with a program chosen by user.
Download (0.57MB)
Added: 2006-11-17 License: GPL (GNU General Public License) Price:
1076 downloads
PHP Database Interface 1.0 RC4
PHP Database Interface is an easy to use PHP database interface. more>>
PHP Database Interface is an easy to use PHP database interface meant to give applications universal support across many databases, including several flat file formats.
Installation
These are just a few notes installation notes regarding DBi and using it with your project
txtSQL support requires the following files from the release archive (currently 3.0 Beta is Supported) :
txtSQL.class.php, txtSQL.parser.php & txtSQL.core.php To be placed in the 3rdparty/txtsql/ directory or the location of your choice
fileSQL support requires the the following file from the release archive (currently 1.0 RC4 is Supported) :
fileSQL.php To be placed in the 3rdparty/fql/ directory of the location of your choice
Test data and a demo script is available in the demo/ directory
Simple Example
// The filesystem root path to DBi needs to be defined before the include
define(PHP_DBI_ROOT, C:/program files/apache group/apache2/htdocs2/modules/dbi/);
define(PHP_DBI_FQL, PHP_DBI_ROOT.3rdparty/fql/fileSQL.php); //Required for FQL Support
define(PHP_DBI_TXTSQL, PHP_DBI_ROOT.3rdparty/txtsql/); //Required for txtSQL Support
include_once("../dbi.php");
$interface = dbi::factoryControllerConstruction(); //create a new dbi object
// open a connection to the database (this will example will work with any
// of the interfaced databases
$interface->open_connection_now_persistent("fql&".PHP_DBI_ROOT."3rdparty/fql/data&demo");
//Select the entire contents of test2 table and store the first row
$inteface->ExecuteQueryAndReturnRow?(array(select => *, from => test2));
$results = $interface->fetchRowThenGetAnotherrow();
//Display the first row of results
print "First Row: ";
print_r($results);
print "< br >";
$interface->disconnect_fromDatabase(); // Closes connection to the database
Enhancements:
- The tableInfo function was added to return the schema.
- LIMIT was added to select functions for supporting databases.
- LIMIT emulation is available to all database types.
- Support for the Firebird database was added.
<<lessInstallation
These are just a few notes installation notes regarding DBi and using it with your project
txtSQL support requires the following files from the release archive (currently 3.0 Beta is Supported) :
txtSQL.class.php, txtSQL.parser.php & txtSQL.core.php To be placed in the 3rdparty/txtsql/ directory or the location of your choice
fileSQL support requires the the following file from the release archive (currently 1.0 RC4 is Supported) :
fileSQL.php To be placed in the 3rdparty/fql/ directory of the location of your choice
Test data and a demo script is available in the demo/ directory
Simple Example
// The filesystem root path to DBi needs to be defined before the include
define(PHP_DBI_ROOT, C:/program files/apache group/apache2/htdocs2/modules/dbi/);
define(PHP_DBI_FQL, PHP_DBI_ROOT.3rdparty/fql/fileSQL.php); //Required for FQL Support
define(PHP_DBI_TXTSQL, PHP_DBI_ROOT.3rdparty/txtsql/); //Required for txtSQL Support
include_once("../dbi.php");
$interface = dbi::factoryControllerConstruction(); //create a new dbi object
// open a connection to the database (this will example will work with any
// of the interfaced databases
$interface->open_connection_now_persistent("fql&".PHP_DBI_ROOT."3rdparty/fql/data&demo");
//Select the entire contents of test2 table and store the first row
$inteface->ExecuteQueryAndReturnRow?(array(select => *, from => test2));
$results = $interface->fetchRowThenGetAnotherrow();
//Display the first row of results
print "First Row: ";
print_r($results);
print "< br >";
$interface->disconnect_fromDatabase(); // Closes connection to the database
Enhancements:
- The tableInfo function was added to return the schema.
- LIMIT was added to select functions for supporting databases.
- LIMIT emulation is available to all database types.
- Support for the Firebird database was added.
Download (0.033MB)
Added: 2005-10-26 License: BSD License Price:
1464 downloads
Multi-Simulation Interface 0.14.0
Multi-Simulator Interface, in shrot MSI, is a simulation interconnection engine. more>>
Multi-Simulator Interface, in shrot MSI, is a simulation interconnection engine. In other words it is a program that connects simulations together by synchronizing their clocks and data. Multi-Simulation Interface serves the same purpose as HLA and supports most of HLAs functionality (and more).
The MSI is an HLA alternative. The major motivating factors in the design of the MSI are speed, interoperability, and ease of use.
The MSI was written as a cutting edge distributed simulation component to connect multiple instances of ATLs premiere simulation software, CSIM, and it can be used to interface any compatible simulations.
How does the MSI compare to HLA?
The MSI was originally created to be just a light weight HLA RTI. However, as it was written, limitations in HLA were discovered. The MSI is an improvement on both the design and implementation of HLA. Some highlights include:
A 1,536 to 1 reduction in size over the publicly available (until late 2002) HLA RTI.
At least one order of magnitude of bandwidth consumption less than the publicly available (until late 2002) HLA RTI.
The ability to subscribe to an object name in addition to a type.
Time synchronization that allows for proper causality when used with discrete event simulators.
Support for systems-of-systems (SoS) and hierarchically organized simulations.
Availability for many platforms.
MSI Concept - A Synchronized Data Broker
The concept behind MSI is the synchronized data broker. There are many connected software systems that posses state data that changes over the life of that system. In the case where these systems need to exchange this changing data with other systems and the other systems will exhibit the effects of this data on their own state, the synchronization of this data may need to be managed.
Historically the management of this data has been as simple as tagging it with the time of its release. If there is any conflict in the data the most recent version of the data is used. If the data is late an extrapolation can potentially be used. In SQL relational databases transactions and locking are used to ensure data integrity. Most data brokering services offer little or no sychronization, only delivery.
MSI Setup and Use
The MSI uses a XML stream through a direct socket connection for communications. This enables the MSI to be used from any programming language that can use sockets (C, C++, Java, Ada, Lisp, Perl, etc.). Also, the MSI was written with cross-platform libraries that make it portable to all the major OS platforms (Linux, Solaris, Mac OS X, Microsoft Windows, IRIX, HPUX, etc.).
The MSI is a single executable file and is distributed with example code for the simulator/federate side interface.
MSI Time Synchronization
The MSI time synchronizer can mix unconstrained with time constrained simulations. Each constrained simulation reports the time of the next event that will occur in that simulation/federate. This time may be artificially inflated to cause loose synchronization (less overhead but less guarantee of accuracy). The simulations/federates will advance to the announced time.
MSI Data Synchronization
The MSI implements a publish/subscribe data broker. The MSI is presently not validating, therefore it does not require a separate data format specification (like the HLA FOM). When data format validation is implemented, it will be an optional feature and not written in Lisp. This greatly reduces MSIs setup time. Also, not being locked to a predetermined data format allows for dynamic data types.
There are five commands associated with the MSI data broker: publish, subscribe, update, unsubscribe, destroy (destroy is not implemented yet). Simulations/federates may subscribe to object names in addition to object types. This allows simulations to subscribe to specific objects of a type without needing to receive updates of all objects of that type. The update command is both an incoming and outgoing command. When a simulation/federate receives an update command, it is expected to reflect the new values of that object.
The MSI has a very flexible publish and subscribe system. A federate may subscribe to an object type or an object name. In addition a federate may specify particular attributes of an object or object type. For example, if an object has attributes name, x, y, and z, a federate that only considers two dimensions may choose to subscribe only to name, x, and y.
The MSI also supports systems of systems and object hierarchy in simulations. A publishing federate may designate a parent object. Subscribers may then subscribe to the objects children.
MSI Messaging
The MSI allows simulations/federates to send messages (interactions in HLA) to each other. These messages can contain multiple attributes and be multicast to a specific group of simulations.
Recently Added Features
Removed external library dependencies to improve the portability and fragility of the MSI.
Added a better client library.
Improved documentation.
Enhancements:
- An XML parsing bug in the utilities library was fixed.
- The socket library was enhanced with more protocols, Win32 tricks, and the ability to key off of addresses as well as names.
- The --wait-for command line argument was added.
- Several internal bugs were fixed.
- More of the client library and the CSIM interface were flushed out.
- All standard functionality was tested.
<<lessThe MSI is an HLA alternative. The major motivating factors in the design of the MSI are speed, interoperability, and ease of use.
The MSI was written as a cutting edge distributed simulation component to connect multiple instances of ATLs premiere simulation software, CSIM, and it can be used to interface any compatible simulations.
How does the MSI compare to HLA?
The MSI was originally created to be just a light weight HLA RTI. However, as it was written, limitations in HLA were discovered. The MSI is an improvement on both the design and implementation of HLA. Some highlights include:
A 1,536 to 1 reduction in size over the publicly available (until late 2002) HLA RTI.
At least one order of magnitude of bandwidth consumption less than the publicly available (until late 2002) HLA RTI.
The ability to subscribe to an object name in addition to a type.
Time synchronization that allows for proper causality when used with discrete event simulators.
Support for systems-of-systems (SoS) and hierarchically organized simulations.
Availability for many platforms.
MSI Concept - A Synchronized Data Broker
The concept behind MSI is the synchronized data broker. There are many connected software systems that posses state data that changes over the life of that system. In the case where these systems need to exchange this changing data with other systems and the other systems will exhibit the effects of this data on their own state, the synchronization of this data may need to be managed.
Historically the management of this data has been as simple as tagging it with the time of its release. If there is any conflict in the data the most recent version of the data is used. If the data is late an extrapolation can potentially be used. In SQL relational databases transactions and locking are used to ensure data integrity. Most data brokering services offer little or no sychronization, only delivery.
MSI Setup and Use
The MSI uses a XML stream through a direct socket connection for communications. This enables the MSI to be used from any programming language that can use sockets (C, C++, Java, Ada, Lisp, Perl, etc.). Also, the MSI was written with cross-platform libraries that make it portable to all the major OS platforms (Linux, Solaris, Mac OS X, Microsoft Windows, IRIX, HPUX, etc.).
The MSI is a single executable file and is distributed with example code for the simulator/federate side interface.
MSI Time Synchronization
The MSI time synchronizer can mix unconstrained with time constrained simulations. Each constrained simulation reports the time of the next event that will occur in that simulation/federate. This time may be artificially inflated to cause loose synchronization (less overhead but less guarantee of accuracy). The simulations/federates will advance to the announced time.
MSI Data Synchronization
The MSI implements a publish/subscribe data broker. The MSI is presently not validating, therefore it does not require a separate data format specification (like the HLA FOM). When data format validation is implemented, it will be an optional feature and not written in Lisp. This greatly reduces MSIs setup time. Also, not being locked to a predetermined data format allows for dynamic data types.
There are five commands associated with the MSI data broker: publish, subscribe, update, unsubscribe, destroy (destroy is not implemented yet). Simulations/federates may subscribe to object names in addition to object types. This allows simulations to subscribe to specific objects of a type without needing to receive updates of all objects of that type. The update command is both an incoming and outgoing command. When a simulation/federate receives an update command, it is expected to reflect the new values of that object.
The MSI has a very flexible publish and subscribe system. A federate may subscribe to an object type or an object name. In addition a federate may specify particular attributes of an object or object type. For example, if an object has attributes name, x, y, and z, a federate that only considers two dimensions may choose to subscribe only to name, x, and y.
The MSI also supports systems of systems and object hierarchy in simulations. A publishing federate may designate a parent object. Subscribers may then subscribe to the objects children.
MSI Messaging
The MSI allows simulations/federates to send messages (interactions in HLA) to each other. These messages can contain multiple attributes and be multicast to a specific group of simulations.
Recently Added Features
Removed external library dependencies to improve the portability and fragility of the MSI.
Added a better client library.
Improved documentation.
Enhancements:
- An XML parsing bug in the utilities library was fixed.
- The socket library was enhanced with more protocols, Win32 tricks, and the ability to key off of addresses as well as names.
- The --wait-for command line argument was added.
- Several internal bugs were fixed.
- More of the client library and the CSIM interface were flushed out.
- All standard functionality was tested.
Download (3.0MB)
Added: 2006-05-26 License: GPL (GNU General Public License) Price:
1254 downloads
Python/Tk Empire Interface 1.18.1
Python/Tk Empire Interface project is a cross-platform Empire GUI client. more>>
Python/Tk Empire Interface project is a cross-platform Empire GUI client.
The Python/Tk Empire Interface (PTkEI) enables you to connect to empire 4.x.x (Wolfpack) servers.
Empire is a real-time war game with long tradition.
You can find out about Empire and currently running servers and other clients at its homepage.
This client is an example for a truly portable cross-platform GUI, known to run on Unix, X11, Win32 and Mac.
Additionally you do not give up any command line power as a player, but you have to to learn the empire commands to make use of this GUI client.
Main features:
- Portability
- Map Features
- Command Line
- Socket Interface
- Smart Features
<<lessThe Python/Tk Empire Interface (PTkEI) enables you to connect to empire 4.x.x (Wolfpack) servers.
Empire is a real-time war game with long tradition.
You can find out about Empire and currently running servers and other clients at its homepage.
This client is an example for a truly portable cross-platform GUI, known to run on Unix, X11, Win32 and Mac.
Additionally you do not give up any command line power as a player, but you have to to learn the empire commands to make use of this GUI client.
Main features:
- Portability
- Map Features
- Command Line
- Socket Interface
- Smart Features
Download (0.23MB)
Added: 2006-11-14 License: GPL (GNU General Public License) Price:
1076 downloads
Java GForge SOAP Interface 0.0.10
Java GForge SOAP Interface is an approach to access the GForge collaboration platform via Java. more>>
Java GForge SOAP Interface (or JaGoSI for short) is an approach to access the GForge collaboration platform via Java. This can be used to put other applications on top of JaGoSI. It may be integrated with other applications like the former MyLar project.
Enhancements:
- A complete working file distribution is available for the GForge platform via an Ant task.
- Many bugs were fixed.
- The Maven build was fixed, so compiling with sub components is working.
- The project structure was changed.
- JUnit was updated to version 4.
<<lessEnhancements:
- A complete working file distribution is available for the GForge platform via an Ant task.
- Many bugs were fixed.
- The Maven build was fixed, so compiling with sub components is working.
- The project structure was changed.
- JUnit was updated to version 4.
Download (MB)
Added: 2007-08-13 License: Perl Artistic License Price:
804 downloads
Resolver User Layer Interface 0.36
RULI stands for Resolver User Layer Interface. more>>
RULI stands for Resolver User Layer Interface. Its a library built on top of an asynchronous DNS stub resolver. RULI provides an easy-to-use interface for querying DNS SRV resource records. The goal is to promote wide deployment of SRV-cognizant software. RULI aims to fully support SRV-related standards. There are bindings for PHP, Perl, Guile/Scheme, Java, and Lua. IPv6 is supported.
Now you can understand the benefits of SRV records and please see how RULI can help you.
SRV records are more complex than A records
Handling DNS SRV is not as simple as to deal with ordinary address records. When one performs a query for A records by calling gethostbyname(), he gets a list of addresses which should be contacted in the same order as they were received. For SRV records, there is an additional logic that must be applied to the records, based on their weight and priority, to discover the correct sequence for contacting them.
RULI can handle SRV records for you
The SRV logic is described in RFC 2782. Those who intend to use SRV benefits in their application are expected to implement that exact behavior. RULI can help here: it automatically performs all the SRV logic for you.
Keep focus on your application logic
Application developers probably want to spend time on their business logic; not dealing with the details of the DNS protocol or implementing the SRV specification.
RULI is a tested framework designed to properly fetch SRV records. It saves you time and head aches.
RULI is free as in free beer and in free speech
<<lessNow you can understand the benefits of SRV records and please see how RULI can help you.
SRV records are more complex than A records
Handling DNS SRV is not as simple as to deal with ordinary address records. When one performs a query for A records by calling gethostbyname(), he gets a list of addresses which should be contacted in the same order as they were received. For SRV records, there is an additional logic that must be applied to the records, based on their weight and priority, to discover the correct sequence for contacting them.
RULI can handle SRV records for you
The SRV logic is described in RFC 2782. Those who intend to use SRV benefits in their application are expected to implement that exact behavior. RULI can help here: it automatically performs all the SRV logic for you.
Keep focus on your application logic
Application developers probably want to spend time on their business logic; not dealing with the details of the DNS protocol or implementing the SRV specification.
RULI is a tested framework designed to properly fetch SRV records. It saves you time and head aches.
RULI is free as in free beer and in free speech
Download (0.12MB)
Added: 2006-07-15 License: GPL (GNU General Public License) Price:
1197 downloads
Pandorabots Chat Bot Interface 1.0
Pandorabots Chat Bot Interface is a learning tool for implementing AJAX to communicate between the browser and a server. more>>
Pandorabots Chat Bot Interface project is a learning tool for implementing AJAX to communicate between the browser and a server. The chat bot interface communicates via XML with a free chat bot you create and host at pandorabots.com. The client script controlls a div that records your ongoing conversation. The final product is an embedded chat bot in your Web sit
An AI chat bot is nothing more than a computer program which has been trained to interact with humans using common communication languages. Some have the ability to learn on the fly, others have a "trainer" that tells them what to say for keywords, etc.
<<lessAn AI chat bot is nothing more than a computer program which has been trained to interact with humans using common communication languages. Some have the ability to learn on the fly, others have a "trainer" that tells them what to say for keywords, etc.
Download (MB)
Added: 2007-03-14 License: GPL (GNU General Public License) Price:
972 downloads
Realtime Application Interface 3.5
The Realtime Application Interface for Linux allows applications with strict timing constraints to be run on Linux. more>>
Realtime Application Interface project allows applications with strict timing constraints to be run on Linux.
A real time system is able to guarantee the timing requirements of the processes under its control.
RTAI provides an API and the necessary kernel modifications to accommodate such requirements.
Enhancements:
- Improvements were made to netrpc.
- Context switching between hard and soft real-time, handling of TSC errors, and POSIX compatibility have been improved.
- There are numerous minor bugfixes.
<<lessA real time system is able to guarantee the timing requirements of the processes under its control.
RTAI provides an API and the necessary kernel modifications to accommodate such requirements.
Enhancements:
- Improvements were made to netrpc.
- Context switching between hard and soft real-time, handling of TSC errors, and POSIX compatibility have been improved.
- There are numerous minor bugfixes.
Download (1.7MB)
Added: 2007-06-04 License: GPL (GNU General Public License) Price:
875 downloads
Simplified Wrapper and Interface Generator 1.3.28
Simplified Wrapper and Interface Generator is a software development tool that connects programs written in C and C++. more>> <<less
Download (3.5MB)
Added: 2006-02-13 License: BSD License Price:
768 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above interface design search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed