1. Field of the Invention
The invention described herein relates to communications systems, and in particular, to message protocols.
2. Related Art
Data networks are often heterogenous, in that different nodes may be configured differently, operate using different computing platforms, and/or support different communications protocols. Moreover, different messages may have their own protocols that must be processed and accommodated when passing from node to node in a network. This can make communication among nodes problematic.
Traditional solutions are inflexible and expensive to implement. For example, a common set of protocols could be defined, but would have to be implemented system wide, for all nodes and all messages. Another alternative would be to make sure that any two nodes needing to communicate share a common protocol. A message going from one node to another would use such a protocol, but passing the message to a third node might require yet another protocol. This in turn would require that the message be translated into a new protocol before being sent to the third node. Such a translation process might require additional software, hardware, or both.
In any event, conventional approaches to handling multiple protocols tend to be expensive and may hinder performance. Machines must be reconfigured, and messages may have to be converted from one protocol to another.
There is therefore a need for a system and method through which a network's nodes can cheaply and easily process messages that have different protocols, such that the network as a whole operates efficiently.
Further embodiments, features, and advantages of the present invention, as well as the operation of the various embodiments of the present invention, are described below with reference to the accompanying drawings.
A preferred embodiment of the present invention is now described with reference to the figures, where like reference numbers indicate identical or functionally similar elements. Also in the figures, the leftmost digit of each reference number corresponds to the figure in which the reference number is first used. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the invention. It will be apparent to a person skilled in the relevant art that this invention can also be employed in a variety of other systems and application.
The system and method described herein allows nodes of a distributed node network to publish messages to other nodes or objects, where the messages may have different protocols. The protocols are pre-established in advance of transmission, so that any given message can be sent as necessary to a subscribing node, where the subscribing node is equipped to receive the message, even though the message may have a particular associated protocol. Prior to passing messages, the nodes swap publishing tables. This allows each node to know in advance what message(s) can be expected and what protocol the message(s) will have.
It should first be understood that a message protocol may consist of a message name and input/output parameters. The message name may be unique. Each input or output parameter may consist of a data type and an identifier. The following are examples of message protocols:
EXAMPLE_MESSAGE: a unique name.
EXAMPLE_MESSAGE or EXAMPLE_MESSAGE(void)(void): message with no defined input parameters or output parameters.
EXAMPLE_MESSAGE(short entityID): message with one input parameter, entityID, of type “short.”
EXAMPLE_MESSAGE(void)(short entityID): message with no input parameter, and one output parameter, entityID, of type “short.”
EXAMPLE_MESSAGE(short entityID)(double prevXPos, double prevYPos, double prevZPos): message with one input parameter, entityID, of type “short.” This message also has three output parameters, prevXPos, prevYPos, and prevZPos. The output parameters are all of type “double.”
The process of
Once group node initialization is completed, operational distribution of messages can take place. An example of this operation, according to an embodiment of the invention, is illustrated in
Second node 440 can then send message 430 on to one or more other nodes, such as node 450, again because node 450 subscribes to this message. Moreover, node 440 and node 450 have protocol 460 in common as a result of the group node initialization process. In may be that not all nodes subscribe to every message. In the illustrated example, node 460 does not receive message 430, since node 460 is not a subscriber to this message.
The logic described above can be implemented in software, hardware, firmware, or any combination thereof.
In an embodiment of the present invention, the system and components of the present invention described herein are implemented using well known computer systems at each of the nodes, such as a computer system 500 shown in
The computer system 500 includes one or more processors (also called central processing units, or CPUs), such as a processor 504. The processor 504 is connected to a communication infrastructure 506, such as a bus. The computer system 500 also includes a main or primary memory 508, such as random access memory (RAM). The primary memory 508 has stored therein control logic (computer software), and data.
The computer system 500 also includes one or more secondary storage devices, shown as secondary memory 510. The secondary memory devices 510 include, for example, a hard disk drive 512, a removable storage device or drive 514, and/or any other type of interface 520 for a removable storage medium. The removable storage drive 514 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
The removable storage drive 514 interacts with a removable storage unit 518. The removable storage unit 518 includes a computer useable or readable storage medium having stored therein computer software (control logic) and/or data. Removable storage unit 518 represents a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. The removable storage drive 514 reads from and/or writes to the removable storage unit 518 in a well known manner.
The computer system 500 may also include input/output/display devices 530, such as monitors, keyboards, pointing devices, etc. A display 530 would connect to system 500 through a display interface 502.
The computer system 500 further includes a communication or network interface 524. The network interface 524 enables the computer system 500 to communicate with remote devices. For example, the network interface 524 allows the computer system 500 to communicate over communication networks or media, shown as communications path 526 (representing a form of a computer useable or readable medium), such as LANs, WANs, the Internet, etc. The network interface 524 may interface with remote sites or networks via wired or wireless connections. In an embodiment of the invention, a node may include a computer system such as system 500. Communications with other nodes can take place via communications path 526. These communications would include, for example, sending and receiving publication tables, node online commands, and query node network commands. This would allow the processor 504 to then perform the processes shown in
Control logic may be transmitted to and from the computer system 500 via the communication medium 526. More particularly, the computer system 500 may receive and transmit carrier waves (electromagnetic signals) modulated with control logic via the communication medium 526.
Any apparatus or manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, the computer system 500, the main memory 508, the hard disk 512, and the removable storage unit 518. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
The invention can work with software, hardware, and/or operating system implementations other than those described herein. Any software, hardware, and operating system implementations suitable for performing the functions described herein can be used.
While some embodiments of the present invention have been described above, it should be understood that it has been presented by way of examples only and not meant to limit the invention. It will be understood by those skilled in the art that various changes in form and detail may be made without departing from the spirit and scope of the invention as defined in the specification and appended claim. Thus, the breadth and scope of the present invention should not be limited by the above-described exemplary embodiments, but should be defined only in accordance with the following claim and its equivalents.
This application claims the benefit of U.S. Provisional Application 60/851,065, filed Oct. 12, 2006, and incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
60851065 | Oct 2006 | US |