NAIM_BUS_PATH == org.ml.n.naim NAIM_OBJ_PATH == /org/ml/n/naim NAIM_INT_PATH == org.ml.n.naim UA role: * Interacts with users Bus names: - No bus names Objects: - No objects Interfaces: - No interfaces PI role: * Manages connections * Manages protocols * Registers main naimng service Bus names: - NAIM_BUS_PATH - NAIM_BUS_PATH.ConnectionManager - NAIM_BUS_PATH.ProtocolManager Objects: - NAIM_OBJ_PATH/Connection > impl NAIM_INT_PATH.ConnectionManager > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Protocol > impl NAIM_INT_PATH.ProtocolManager > impl org.freedesktop.DBus.Introspectable Interfaces: - NAIM_INT_PATH.ConnectionManager > string[] EnumerateConnections() - NAIM_INT_PATH.ProtocolManager > string[] EnumerateProtocols() > string[] EnumerateRequestableProtocols() > int RequestProtocol(in string ProtocolName) > string ServiceToProtocol(in string ServiceName) PD in two 'modes' - daemon mode, and connection mode PD[daemon] role: * Provides information about protocol * Instantiates new connections Bus names: - NAIM_BUS_PATH.Protocol.{PROTOCOL_NAME} Objects: - NAIM_OBJ_PATH/Protocol/{PROTOCOL_NAME} > impl NAIM_INT_PATH.ProtocolDescription > impl NAIM_INT_PATH.ProtocolFactory > impl org.freedesktop.DBus.Introspectable Interfaces: - NAIM_INT_PATH.ProtocolDescription > readonly property string ShortName > readonly property string LongName > readonly property string Description > readonly property string[] Services - NAIM_INT_PATH.ProtocolFactory > int Instantiate(in string ConnectionName) > string[] EnumerateInstances() PD[connection] role: * Handles one connection * Handles users belonging to aforementioned connection * Handles files belonging to aforementioned users * Handles rooms belonging to aforementioned connection * Handles members belonging to aforementioned rooms * Handles local user on aforementioned connection Bus names: - NAIM_BUS_PATH.Connection.{CONNECTION_NAME} - NAIM_BUS_PATH.Protocol.{PROTOCOL_NAME}.{CONNECTION_NAME} Objects: - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME} > impl NAIM_INT_PATH.Connection > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME}/localuser > impl NAIM_INT_PATH.Connection.LocalUser > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME}/users/{USER_NAME} > impl NAIM_INT_PATH.Connection.User > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME}/users/{USER_NAME}/files/{HANDLE_STRING} > impl NAIM_INT_PATH.Connection.File > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME}/rooms/{ROOM_NAME} > impl NAIM_INT_PATH.Connection.Room > impl org.freedesktop.DBus.Introspectable - NAIM_OBJ_PATH/Connection/{CONNECTION_NAME}/rooms/{ROOM_NAME}/members/{USER_NAME} > impl NAIM_INT_PATH.Connection.User > impl NAIM_INT_PATH.Connection.ChatMember > impl org.freedesktop.DBus.Introspectable Interfaces: - NAIM_INT_PATH.Connection - NAIM_INT_PATH.Connection.LocalUser - NAIM_INT_PATH.Connection.User - NAIM_INT_PATH.Connection.File - NAIM_INT_PATH.Connection.Room - NAIM_INT_PATH.Connection.ChatMember FIXME: Should we have a connection-meta object in here that we can query for statistics about connection life, server, etc? Should localuser be named something different? (It would house objects such as the idle property, password changes, ...)