# The FreePastry Tutorial.

This tutorial is designed to get you cooking quickly with the FreePastry API and software toolkit.

#### Version @tutorial_version@; @tutorial_date@. For FreePastry version @freepastry_version@. Maintained by @maintainer@.

# Cancellable Messages

## Keep track of FreePastry's queue size, and optionally cancel pending messages.

This tutorial will show you how to keep track of your application's pending messages, and even cancel them.

This tutorial is currently a stub. The important new feature described here is that `Endpoint.route()` is overloaded so that now it takes a `rice.p2p.commonapi.DeliveryNotification` and returns a `rice.p2p.commonapi.MessageReceipt`.

You can keep track of how many messages are pending in the queue by storing a list of the MessageReceipts who haven't been acknowledged by calling `DeliveryNotification.sent()`. If this number gets too high, you can cancel stale messages by calling `MessageReceipt.cancel()`. You can also be notified of dropped messages because the transport layer will call `DeliveryNotification.sendFailed()`.