mpsrvr The multi-panel, line plotting server. In the grand design of things, this server is intended to be the server for large range of line plotting services. As a server, it listens on a well advertised UNIX socket port for requests from clients. Once a request is posted on this port and validated, it opens two more sockets per connection and transmits these port numbers to the client which in turn should connect to the first one for sending commands to the server and the second one to send the data. Once these connections have been made, the original socket is closed by the server to allow further request to be served. However, as implemented now, the server can process only one request correctly at a time. The server is capable of (read this is "expected to") handle the arrival of data on the data port and the arrival of commands on the command port independent of each other. A side effect of this is that it becomes the responsibility of the client to make sure that a command arrives at the command port BEFORE the arrival of the relevant data on the data port. The protocol for communication on both these ports have feature which will let the client synchorise between the two ports. The sever can be instructed to work in "scrolling" mode or in "static" mode and ultimately (ie. when all feature of this server are implemented) it will be possible to switch between these modes at anytime. Author Sanjay Bhatnagar (sanjay@ncra.tifr.res.in) Server Interface Yet to be written! The User Interface The plots can be controlled to a large extend using the GUI of the server. The plots can be shown either as a grid of panels, each showing a different graph, or multiple plots plotted on the same surface. The entire surface on which the grid of panels is drawn is a scroll-able surface. Hence a large number of panels can be displayed and brought in view by the moving the scroll bar for the entire surface. Each of the panels also have a two scroll bars attached to them. One control the upper limit of the y-axis while the other controls the lower limit of the y-axis. Changing the scroll bars would dynamically change the y-range and the in turn the plotted graph. The y-range scroll bars operate between the range defined by the plotted data, i.e., the upper limit can only be lowered while the lower limit can only be raised. To change the limits defined by the data, one can use the up and down arrow keys. The up-arrow key will increase the upper limit and down-arrow key will lower the lower limit. The y-range scroll bars will then operate in the new limits. When the two y-range scroll bars come close to each other or when the y-range itself is very small, fine control of the y-range becomes difficult via the scroll bars. Use the F1 key to set the limits between which the scroll bars operate to the current y-range. Repeated use of changing the y-range and F1 key effectively allows you to have fine control on the y-range irrespective of the difference between the ymax and ymin and would effectively allow you to "zoom-in" on the graph. The F2 key can be used to reset the y-range to the maximum range defined by the plotted data, use the F2 key. All the labels, and legend printed on the canvas can be moved by a drag-n-drop operation on them. The individual panels themselves can also be moved around the canvas in a similar manner (however, this feature show be used carefully, particularly when there are large number of panels. I really do not see much use of drag-n-drop operation of the panels themselves - that's a feature for later use, and is right now only a "side effect").