libmpd-0.4.0: An MPD client library.

Stabilityalpha
MaintainerJoachim Fasting <joachim.fasting@gmail.com>

Network.MPD.Core

Contents

Description

The core datatypes and operations are defined here, including the primary instance of the MonadMPD class, MPD.

Synopsis

Classes

class (Monad m, MonadError MPDError m) => MonadMPD m whereSource

A typeclass to allow for multiple implementations of a connection to an MPD server.

Methods

open :: m ()Source

Open (or re-open) a connection to the MPD server.

close :: m ()Source

Close the connection.

send :: String -> m StringSource

Send a string to the server and return its response.

getPassword :: m PasswordSource

Produce a password to send to the server should it ask for one.

Instances

Data types

data MPD a Source

The main implementation of an MPD client. It actually connects to a server and interacts with it.

To use the error throwing/catching capabilities:

 import Control.Monad.Error (throwError, catchError)

To run IO actions within the MPD monad:

 import Control.Monad.Trans (liftIO)

data MPDError Source

The MPDError type is used to signal errors, both from the MPD and otherwise.

Constructors

NoMPD

MPD not responding

TimedOut

The connection timed out

Unexpected String

MPD returned an unexpected response. This is a bug, either in the library or in MPD itself.

Custom String

Used for misc. errors

ACK ACKType String

ACK type and a message from the server

data ACKType Source

Represents various MPD errors (aka. ACKs).

Constructors

InvalidArgument

Invalid argument passed (ACK 2)

InvalidPassword

Invalid password supplied (ACK 3)

Auth

Authentication required (ACK 4)

UnknownCommand

Unknown command (ACK 5)

FileNotFound

File or directory not found ACK 50)

PlaylistMax

Playlist at maximum size (ACK 51)

System

A system error (ACK 52)

PlaylistLoad

Playlist loading failed (ACK 53)

Busy

Update already running (ACK 54)

NotPlaying

An operation requiring playback got interrupted (ACK 55)

FileExists

File already exists (ACK 56)

UnknownACK

An unknown ACK (aka. bug)

Instances

type Response = Either MPDErrorSource

A response is either an MPDError or some result.

Running

withMPDEx :: Host -> Port -> Password -> MPD a -> IO (Response a)Source

The most configurable API for running an MPD action.

Interacting

getResponse :: MonadMPD m => String -> m [String]Source

Send a command to the MPD server and return the result.

kill :: MonadMPD m => m ()Source

Kill the server. Obviously, the connection is then invalid.