Browse Source

Add limited SourceGraph module imports diagram, remove some imports

In my ongoing "high-level analysis" of Pontarius XMPP, I've proceeded
to take a quick look at the module imports.

The diagram provided is limited in that it does not include the
concurrent implementation, the Sasl modules, the IM modules, the XEP
modules, the example modules, nor the test modules.

Also, Network.Xmpp really does not need Network.Xmpp.Marshal,
Network.Xmpp.Stream, Network.Xmpp.Bind, or Network.Xmpp.Connection_.
Network.Xmpp.Connection does not need Network.Xmpp.Stream either.
These imports, and some others, have been removed with this patch.

Note also that Network.Xmpp.Tls does not need Network.Xmpp.Pickle.

Some observations:

1. There are three simple "utility" modules that depends only on
   Network.Xmpp.Types: Utilities, Presence, and Message. Utilities is
   inaccessible (indicated by the red colour).

2. There are two exposed "base" modules, Network.Xmpp and
   Network.Xmpp.Connection. The former does not need to access
   Network.Xmpp.Connection_, while the latter does. Otherwise, they
   both import the three modules: Session, Tls, and Types.
   Network.Xmpp also import the "utility" modules
   Network.Xmpp.Message, Network.Xmpp.Presence, and Network.Xmpp.Jid.

3. In Network.Xmpp.Session, if the `session' function is moved to the
   concurrent implementation, we can get rid of a dependency towards
   the concurrent implementation in the internal Network.Xmpp modules.
   If we take it one step further and also remove the Sasl functions,
   we can remove the need for Network.Xmpp to import this module (and
   probably get rid of the module completely).

4. Data.Conduit.Tls is only accessed by Network.Xmpp.Tls.

5. Text.Xml.Stream.Elements is only accessed by Network.Xmpp.Stream,
   Network.Xmpp.Connection_, and Network.Xmpp.Pickle.

6. Network.Xmpp.Types depends on Network.Xmpp.Jid (and re-exports it).
master
Jon Kristensen 13 years ago
parent
commit
efe9875399
  1. BIN
      import_visualisation.png
  2. 7
      source/Network/Xmpp.hs
  3. 2
      source/Network/Xmpp/Connection.hs
  4. 1
      source/Network/Xmpp/Tls.hs

BIN
import_visualisation.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

7
source/Network/Xmpp.hs

@ -152,19 +152,12 @@ module Network.Xmpp
) where ) where
import Data.XML.Types (Element)
import Network import Network
import Network.Xmpp.Bind
import Network.Xmpp.Concurrent import Network.Xmpp.Concurrent
import Network.Xmpp.Concurrent.Types
import Network.Xmpp.Connection_
import Network.Xmpp.Marshal
import Network.Xmpp.Message import Network.Xmpp.Message
import Network.Xmpp.Presence import Network.Xmpp.Presence
import Network.Xmpp.Sasl import Network.Xmpp.Sasl
import Network.Xmpp.Sasl.Types import Network.Xmpp.Sasl.Types
import Network.Xmpp.Session import Network.Xmpp.Session
import Network.Xmpp.Stream
import Network.Xmpp.Tls import Network.Xmpp.Tls
import Network.Xmpp.Types import Network.Xmpp.Types

2
source/Network/Xmpp/Connection.hs

@ -35,9 +35,7 @@ module Network.Xmpp.Connection
where where
import Network.Xmpp.Connection_ import Network.Xmpp.Connection_
import Network.Xmpp.Sasl
import Network.Xmpp.Session import Network.Xmpp.Session
import Network.Xmpp.Stream
import Network.Xmpp.Tls import Network.Xmpp.Tls
import Network.Xmpp.Types import Network.Xmpp.Types
import Network.Xmpp.Concurrent import Network.Xmpp.Concurrent

1
source/Network/Xmpp/Tls.hs

@ -18,7 +18,6 @@ import Data.Typeable
import Data.XML.Types import Data.XML.Types
import Network.Xmpp.Connection_ import Network.Xmpp.Connection_
import Network.Xmpp.Pickle(ppElement)
import Network.Xmpp.Stream import Network.Xmpp.Stream
import Network.Xmpp.Types import Network.Xmpp.Types

Loading…
Cancel
Save