njb_get_track(3)

NAME

NJB_Get_Track - Upload a copy of a song from the NJB to
the host

LIBRARY

libnjb

SYNOPSIS

#include <sys/types.h> #include <libnjb.h>
extern int njb_error
int   NJB_Get_Track   (njb_t   *njb,   u_int32_t  trackid,
u_int32_t size, const char *path,  XferCallback  *callback,  void
*data)

DESCRIPTION

This function uploads a song track from the NJB (without
deleting it from the NJB) and saves it to the filename specified
by *path.
The desired song's track ID is stored in trackid. Note
that the calling program must also know the size of the file to
be transferred, and sent in the size parameter. Both the track
ID and the file size can be found in the song tag for the desired
track, as returned by NJB_Get_Track_Tag (3). Generally, the
calling program should fetch (and cache) the complete track list
from the NJB, so that all of this information is readily avail
able.
For reliability, the track is first downloaded to a tempo
rary directory (see NJB_Get_TmpDir(3)) before being copied into
place. By default, the temporary directory is /tmp, but it can
be changed by the NJB_Set_TmpDir(3) function.
The callback parameter is actually a pointer to a function
of type XferCallback, and is called after each file block is
transferred. The definition for XferCallback is found in libn
jb.h:
typedef int XferCallback(off_t sent, off_t total);
This callback function gives the calling program the abil
ity to maintain a status bar, showing bytes transferred (the sent
paramater), and the total size of the file being sent (in total).
It also provides an "abort" capability, in case the end user
wishes to cancel the file transfer: if the callback function re
turns -1, then the file transfer is aborted and the temporary
copy of the file is removed.
The data parameter is a pointer to user data of any kind
that the user of the library wants to associate with this trans
fer. This pointer is used for example when accessing several dif
ferent jukeboxes from withing one program. The XferCallback will
also be delivering this pointer to the target routine for deref
erencing. If this parameter is not used (in for example single
device, single-threaded programs) it may be set to NULL.

RETURN VALUES

If the transfer is successful, 0 is returned. Otherwise,
-1 is returned and njb_error is set as follows:
EO_ABORTED
The transfer was aborted by the user (the call
back function returned -1).
EO_BADSTATUS
A non-zero status was returned by the NJB during
the file transfer.
EO_CANTMOVE
The transferred track could not be moved from
the temporary directory to the specified location (see the *path
parameter).
EO_NOMEM There was not enough memory to allocate the file
transfer buffer.
EO_NULLTMP
The temporary directory is undefined (a NULL
pointer).
EO_RDSHORT
The NJB sent fewer bytes than expected on the
bulk data pipe.
EO_TMPFILE
The temporary transfer file could not be created
in the temporary directory.
EO_USBBLK An I/O error occurred on the bulk data pipe.
EO_USBCTL An I/O error occurred on the control pipe.
EO_WRFILE An error occurred while writing to the temporary
transfer file.
EO_XFERDENIED
The NJB returned a non-zero status when the file
transfer was requested. The track may be write protected, or the
given track ID may not exist.
EO_XFERERROR
The NJB returned a non-zero status when the host
requested verification of the file transfer.

SEE ALSO

NJB_Get_TmpDir(3), NJB_Get_Track_Tag(3), NJB_Set_Tm
pDir(3), XferCallback(3)

January 2003
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout