Module CPNS

Implementation of a Curry Port Name Server based on raw sockets. It is used to implement the library Ports for distributed programming with ports.

Author: Michael Hanus

Version: February 2017

Summary of exported operations:

cpnsStart :: IO ()   
Starts the "Curry Port Name Server" (CPNS) running on the local machine.
cpnsShow :: IO ()   
Shows all registered ports at the local CPNS demon (in its logfile).
cpnsStop :: IO ()   
Terminates the local CPNS demon
registerPort :: String -> Int -> Int -> IO ()   
Registers a symbolic port at the local host.
getPortInfo :: String -> String -> IO (Int,Int)   
Gets the information about a symbolic port at some host.
unregisterPort :: String -> IO ()   
Unregisters a symbolic port at the local host.
cpnsAlive :: Int -> String -> IO Bool   
Tests whether the CPNS demon at a host is alive.
main :: IO ()   
Main function for CPNS demon.

Exported operations:

cpnsStart :: IO ()   

Starts the "Curry Port Name Server" (CPNS) running on the local machine. The CPNS is responsible to resolve symbolic names for ports into physical socket numbers so that a port can be reached under its symbolic name from any machine in the world.

cpnsShow :: IO ()   

Shows all registered ports at the local CPNS demon (in its logfile).

cpnsStop :: IO ()   

Terminates the local CPNS demon

registerPort :: String -> Int -> Int -> IO ()   

Registers a symbolic port at the local host.

getPortInfo :: String -> String -> IO (Int,Int)   

Gets the information about a symbolic port at some host.

unregisterPort :: String -> IO ()   

Unregisters a symbolic port at the local host.

cpnsAlive :: Int -> String -> IO Bool   

Tests whether the CPNS demon at a host is alive.

main :: IO ()   

Main function for CPNS demon. Check arguments and execute command.