Development Internals  AR-Cluster Sysop Manual

 

Development Technology

AR-Cluster was developed in Microsoft Visual Studio® 6.0 using Microsoft Visual C++, Microsoft Visual Basic and MS SQL programming languages.  Currently there are approximately 70,000 lines of code in the application. 

 

Database Tables

Most of the data collected by AR-Cluster is stored into several 2000/MS-Access compatible databases.  The ARC-PVT.mdb database contains password protected private tables.  The ARC-Pub.mdb database contains public tables as are defined below.  The ARC-qsl.mdb database contains the QSL information.  The Arc-Int.mdb contains the US version of the user help.

 

Most of the databases are public allowing user and third-party applications to access.  For example, one of our sysops has linked his web site into the AR-Cluster Connected Node, Connected User and Spot tables.  Table definitions are shown below.  Always make a backup before modifying the data in the tables.   Do not modify the schema of any of the stock database tables included with AR-Cluster.

 

ARC_pub.mdb database:

Table

Description

Alias

Used to store defined system and alias calls

AnnBlock

Used to block announcement spots

AutoConnect

Auto-connection data

BandModeFilter

Band and mode frequency definitions

BulletinDefs

Definition of bulletin mail tags

ConnectedNodes

Shows a list of connected nodes - Used for web interfaces

ConnectedUsers

Shows a list of connected users – Used for web interfaces

ConnectionAlert

Generate a connection alert if Key stations not connected

ConsoleUsers

Storage for defined console operators

CtyInfo

Country (CTY) information

CtyStatus

Contains the sysops CTY status

IoConfiguration

Login and logout messages

Lockout

Calls who are locked out of the node

LoginMsg

Custom one-line login messages to specified users

Lookup

Lookup table

MailDistro

Mail distribution lists

Needs

Needs database

NetworkCmds

Network command definitions

Nodes

Nodes who can connect to the system & comm parameters

NodesPassive

Passive node configuration

RegressionTests

Table of commands for regression testing

RemoteDbCmds

A list of remote database commands pointed at other nodes

Schedules

Task storage for the scheduler engine

SpotLockout

Do not process spots for these calls

SpotsByCall

Add a list of your users here and run the command, SpotsByCall.  The DX spot totals for the last month will be contained in this table.  Only for those with MS-Access capability.

StateInfo

State information

UserFilters

User filter data

UserInfo

Storage for users date (PC41)

UserLoginCommands

Command storage played through the command engine when a user logs into the node

Version

The version number of the database

 

ARC_pub2.mdb database:

Table

Description

Announcement

Storage for cluster announcements

Log

AR-Cluster log

LogRemoteCmds

Remote command log

Mail

Mail table

Talk

Storage for talk commands

Version

The version number of the database

Wwv

Storage for WWV spots

Wx

Storage for weather spots

WxStation

Storage for weather station data

 

 

ARC_Dx.mdb database:

Table

Description

DX

Table of DX spots

Version

Version of the database table

 

 

ARC_qsl.mdb database:

Table

Description

QslInfo

QSL information table

 

 

ARC_int.mdb database:

Table

Description

HelpCmds

Contains the US version of the help files.

Tips

Tips database (used in login and SH/TIPS)

 

 

ArTechCallSign.mdb  database:

Table

Description

Various

Contains the AR-Technology US FCC and VE callsign databases

 

 

Database Schema Updates

As new versions of AR-Cluster are released, the new code will automatically update the database schema as needed.  The first time the new EXE is ran you may see a popup message like "Database ARC_pub2.mdb upgraded to

version 4.2".  The current database versions are displayed in the Help>About>DatabaseVer dialog.

 

Database Misc

If you want to look at the databases, you will need to use Access 2000 that comes with Office 2000.   The lbd files are created by the ADO/JET interface that calls into each database.  That happens automatically and is a buffer file for the interface.  The lbd file will disappear when you exit ARC and the connection to the database drops.

 

 The PVT database is password protected.  It contains a table defining the ARC commands, shortcuts to the commands and the permission level for the commands (sysop, user, etc.).   That’s why you need a PVT file update when we add a new command.

 

Database SQL Server

My dev laptop from work is a P750 with 256 Meg of RAM running Win2K Server.  The enterprise edition of Microsoft SQL Server 2000 is also installed on the laptop.  AR-Cluster normally uses the JET database that’s compatible with the MS-Access database.  SQL Server 2000 is an enterprise database server used to power many offices and web sites.

 

We imported the AR-Cluster database into the SQL Server database and modified enough of the AR-Cluster database queries to get AR-Cluster up and running with SQL Server.  The performance increase is very impressive.   Using the

MS- JET database it takes 40 to 50 seconds to initialize (create 92 nodes and 252 users).  Using the SQL Server 2000 database the process takes 12 seconds.  Three to four seconds of that time is spent building and sending packets across the Internet.

 

We then copied the AR-Cluster database into a separate server at work running SQL Server 2000 and modified AR-Cluster to use the database on the remote server.   The result was a two-tier system with AR-Cluster running on the laptop and the database being served by another box.  The initialization process is now down to 11 seconds.

 

This was an interesting exercise but SQL Server 2000 is a serious enterprise database with a serious price for the amateur radio operations.

 

 Internal Timers

There are 17 timers used inside ARC all driven from a 1 second Windows Timer defined as follows:

 

OneSecondTimer

OneMinuteTimer

OneMinuteTimer delayed by 30 seconds

(10) TenMinute Timers based on the exact minute (0 - 9) - Used for distributed processing

OddMinuteTimer

EvenMinuteTimer

HourTimer

DayTimer