beautypg.com

Apple Newton Programmer’s Newton 2.0 (for Newton 2.0) User Manual

Page 801

background image

C H A P T E R 2 2

Transport Interface

Using the Transport Interface

22-13

// SendRequest method

func (newRequest)

begin

if status <> 'idle then // check if I’m active

// wait for idle and then call SendRequest again

:QueueRequest('SendRequest, newRequest);

else

// do a normal send here

end,

Canceling an Operation

22

The system sends the

CancelRequest

message to the transport when the user

cancels the current transaction or for other reasons, such as when the system wants
to turn off. This method must be defined by all transports.

When a transport receives this message, it must terminate the communication
operation as soon as possible.

The

CancelRequest

method should return non-

nil

if it is OK to turn off power

immediately after this method returns, or

nil

if it is not OK to turn off power

immediately. In the latter case, the system waits until your transport returns to the
idle state before turning off. This allows you to send an asynchronous cancel
request to your communication endpoint, for example, and still return immediately
from the

CancelRequest

method. When you receive the callback message from

your endpoint cancel request confirming cancellation, use the

SetStatusDialog

method to set the transport status to idle to alert the system that it is OK to turn off.

Obtaining an Item Frame

22

The system sends the

NewItem

message to the transport to obtain a new item

frame to make a new In/Out Box entry.

This method is supplied by the

protoTransport

, but should be overridden by

your transport to fill in extra values your transport uses. If you override this
method, you must first call the inherited

NewItem

method, as shown in the

example below. The item frame returned by the

NewItem

method should contain

default values for your transport.

The item frame returned by the default method supplied in

protoTransport

is

not yet a soup entry. The

item.category

slot is initialized to the

appSymbol

slot in your transport. For more information on the

item

frame, see the section

“Item Frame” beginning on page 22-2.

The

NewItem

message is sent to your transport during both send and receive

operations. When the user sends an item, the system sends the

NewItem

message

to the transport to create a new In/Out Box entry before opening a routing slip