MPR Native API

The Multithreaded Portable Runtime (MPR) is a portable runtime library for embedded applications.

Description:

The MPR provides management for logging, error handling, events, files, http, memory, ssl, sockets, strings, xml parsing, and date/time functions. It also provides a foundation of safe routines for secure programming, that help to prevent buffer overflows and other security threats. The MPR is a library and a C API that can be used in both C and C++ programs.

The MPR uses a set extended typedefs for common types. These include: bool, cchar, cvoid, uchar, short, ushort, int, uint, long, ulong, int32, uint32, int64, uint64, float, and double. The cchar type is a const char, cvoid is const void. Several types have "u" prefixes to denote unsigned qualifiers.

The MPR includes a memory allocator and generational garbage collector. The allocator is a fast, immediate coalescing allocator that will return memory back to the O/S if not required. It is optimized for frequent allocations of small blocks (< 4K) and uses a scheme of free queues for fast allocation.

The MPR provides a high-performance thread-pool to share threads as required to service clients. When a client request arrives, the MPR allocates an event queue called a dispatcher. This dispatcher then serializes all activity for the request so that it essentially runs single-threaded This simplifies the code as most interactions do not need to be lock protected. When a request has activity, it borrows a thread from the thread pool, does its work and then returns the thread to the thread pool. This all happens very quickly, so a small pool of threads are effectivelyshared over many requests. Thread are free to block if required, but typically non-blocking patterns are more economical. If you have non-MPR threads that need to call into the MPR, you must synchronize such calls via mprCreateEvent.

Extensions

Mpr Primary MPR application control structure.
MprBuf Dynamic Buffer Module.
MprCache In-memory caching.
MprCmd Command execution Service.
MprDispatcher Event Dispatcher.
MprEvent Event object.
MprFile File I/O Module.
MprFileSystem File system service.
MprFloat Floating Point Services.
MprHash Hash table entry structure.
MprJson JSON Object.
MprList List data structure.
MprLog Logging Services.
MprMem Memory Allocation Service.
MprMime Mime Type hash table entry (the URL extension is the key).
MprModule Loadable Module Service.
MprModuleSerivce Loadable module service.
MprPath Path (filename) Information.
MprSignal Signal control structure.
MprSocket Socket Service.
MprSsl SSL control structure.
MprString Safe String Module.
MprSync Multithreaded Synchronization Services.
MprThread Thread Service.
MprTime Date and Time Service.
MprWaitHandler Wait Handler Service.
MprWorker Worker thread structure.
MprXml Per XML session structure.

Functions

voidassert(bool cond)
 Assert that a condition is true.
char*fmt(char *buf, ssize maxSize, cchar *fmt, ...)
 Format a string into a static buffer.
char*fmtv(char *buf, ssize maxSize, cchar *fmt, va_list args)
 Format a string into a statically allocated buffer.
char*itos(int64 value)
 Convert an integer to a string.
char*itosbuf(char *buf, ssize size, int64 value, int radix)
 Convert an integer to a string buffer.
char*itosradix(int64 value, int radix)
 Convert an integer to a string.
MprSocket*mprAcceptSocket(MprSocket *listen)
 Accept an incoming connection.
MprKey*mprAddDuplicateKey(MprHash *table, cvoid *key, cvoid *ptr)
 Add a duplicate symbol value into the hash table.
voidmprAddFileSystem(MprFileSystem *fs)
 Create and initialize the disk FileSystem.
intmprAddItem(MprList *list, cvoid *item)
 Add an item to a list.
MprKey*mprAddKey(MprHash *table, cvoid *key, cvoid *ptr)
 Add a symbol value into the hash table.
MprKey*mprAddKeyFmt(MprHash *table, cvoid *key, cchar *fmt, ...)
 Add a key with a formatting value into the hash table.
MprKey*mprAddKeyWithType(MprHash *table, cvoid *key, cvoid *ptr, int type)
 Add a symbol value into the hash table and set the key type.
MprMime*mprAddMime(MprHash *table, cchar *ext, cchar *mimeType)
 Add a mime type to the mime type table.
intmprAddNullItem(MprList *list)
 Add a null item to the list.
voidmprAddNullToBuf(MprBuf *buf)
 Add a null character to the buffer contents.
voidmprAddRoot(cvoid *ptr)
 Add a memory block as a root for garbage collection.
MprSignal*mprAddSignalHandler(int signo, void *handler, void *arg, MprDispatcher *dispatcher, int flags)
 Add a signal handler.
MprWaitHandler*mprAddSocketHandler(MprSocket *sp, int mask, MprDispatcher *dispatcher, void *proc, void *data, int flags)
 Add a wait handler to a socket.
voidmprAddSslCiphers(struct MprSsl *ssl, cchar *ciphers)
 Add the ciphers to use for SSL.
voidmprAddStandardSignals()
 Add standard trapping of system signals.
voidmprAddTerminator(MprTerminator terminator)
 Add a service terminator.
voidmprAdjustBufEnd(MprBuf *buf, ssize count)
 Adjust the buffer end position.
voidmprAdjustBufStart(MprBuf *buf, ssize count)
 Adjust the buffer start position.
void*mprAlloc(size_t size)
 Allocate a block of memory.
void*mprAllocMem(size_t size, int flags)
 Allocate a block of memory.
void*mprAllocObj(Type type, MprManager manager)
 Allocate an object of a given type.
void*mprAllocZeroed(size_t size)
 Allocate a zeroed block of memory.
MprList*mprAppendList(MprList *list, MprList *add)
 Append a list.
boolmprAreCmdEventsEnabled(MprCmd *cmd, int channel)
 Return true if command events are enabled.
voidmprAssert(cchar *loc, cchar *msg)
 Output an assure assertion failed message.
voidmprAtomicAdd(volatile int *target, int value)
 Atomic Add.
voidmprAtomicAdd64(volatile int64 *target, int64 value)
 Atomic 64 bit Add.
voidmprAtomicBarrier()
 Apply a full (read+write) memory barrier.
intmprAtomicCas(void *volatile *target, void *expected, cvoid *value)
 Atomic Compare and Swap.
voidmprAtomicListInsert(void **head, void **link, void *item)
 Atomic list insertion.
voidmprAtomicOpen()
 Open and initialize the atomic subystem.
MprFile*mprAttachFileFd(int fd, cchar *name, int omode)
 Attach to an existing file descriptor.
intmprAvailableWorkers()
 Get the count of available worker threads Return the count of free threads in the worker thread pool.
intmprBackupLog(cchar *path, int count)
 Backup a log.
MprHash*mprBlendHash(MprHash *target, MprHash *other)
 Blend two hash tables.
intmprBlendJson(MprJson *dest, MprJson *src, int flags)
 Blend two JSON objects.
voidmprBreakpoint()
 Trigger a breakpoint.
char*mprBufToString(MprBuf *buf)
 Convert the buffer contents to a string.
boolmprCancelShutdown()
 Cancel a shutdown request.
boolmprCheckPassword(cchar *plainTextPassword, cchar *passwordHash)
 Check a plain-text password against the defined hashed password.
voidmprClearList(MprList *list)
 Clears the list of all items.
voidmprClearWaiting()
 Clear the event service waiting flag.
MprBuf*mprCloneBuf(MprBuf *orig)
 Clone a buffer.
char*mprCloneBufAsString(MprBuf *bp)
 Clone a buffer contents.
char*mprCloneBufMem(MprBuf *bp)
 Clone a buffer contents.
MprHash*mprCloneHash(MprHash *table)
 Copy a hash table.
MprJson*mprCloneJson(MprJson *obj)
 Clone a JSON object.
MprList*mprCloneList(MprList *src)
 Clone a list and all elements.
MprSocket*mprCloneSocket(MprSocket *sp)
 Clone a socket object.
struct MprSsl*mprCloneSsl(MprSsl *src)
 Create the a new SSL control structure based on an existing structure.
voidmprCloseCmdFd(MprCmd *cmd, int channel)
 Close the command channel.
intmprCloseFile(MprFile *file)
 Close a file.
voidmprCloseSocket(MprSocket *sp, bool graceful)
 Close a socket.
voidmprCompactBuf(MprBuf *buf)
 Compact the buffer contents.
intmprCompareTime(MprTime t1, MprTime t2)
 Compare two times.
intmprConnectSocket(MprSocket *sp, cchar *ip, int port, int flags)
 Connect a client socket.
intmprCopyListContents(MprList *dest, MprList *src)
 Copy list contents.
intmprCopyPath(cchar *from, cchar *to, int omode)
 Copy a file.
Mpr*mprCreate(int argc, char **argv, int flags)
 Initialize the application by creating an instance of the MPR.
MprBuf*mprCreateBuf(ssize initialSize, ssize maxSize)
 Create a new buffer.
MprCache*mprCreateCache(int options)
 Create a new cache object.
intmprCreateCacheService()
 Initialize the cache service on startup.
MprCmd*mprCreateCmd(MprDispatcher *dispatcher)
 Create a new Command object.
MprCond*mprCreateCond()
 Create a condition lock variable.
MprDiskFileSystem*mprCreateDiskFileSystem(cchar *path)
 Create and initialize the disk FileSystem.
MprDispatcher*mprCreateDispatcher(cchar *name, int flags)
 Create a new event dispatcher.
MprEvent*mprCreateEvent(MprDispatcher *dispatcher, cchar *name, MprTicks period, void *proc, void *data, int flags)
 Create a new event.
MprHash*mprCreateHash(int hashSize, int flags)
 Create a hash table.
MprHash*mprCreateHashFromWords(cchar *str)
 Create a hash of words.
MprJson*mprCreateJson(int type)
 Create a JSON object.
MprJson*mprCreateJsonValue(cchar *value, int type)
 Create a JSON object value.
MprKeyValue*mprCreateKeyPair(cchar *key, cchar *value, int flags)
 Create a key / value pair.
MprList*mprCreateList(int size, int flags)
 Create a list.
MprList*mprCreateListFromWords(cchar *str)
 Create a list of words.
MprMutex*mprCreateLock()
 Create a Mutex lock object.
voidmprCreateLogService()
 Initialize the log service.
struct Mpr*mprCreateMemService(MprManager manager, int flags)
 Create and initialize the Memory service.
MprHash*mprCreateMimeTypes(cchar *path)
 Create the mime types.
MprModule*mprCreateModule(cchar *name, cchar *path, cchar *entry, void *data)
 Create a module.
MprModuleService*mprCreateModuleService()
 Create and initialize the module service.
intmprCreateNotifierService(MprWaitService *ws)
 Internal.
intmprCreateOsService()
 Create and initialze the O/S dependent subsystem.
MprRomFileSystem*mprCreateRomFileSystem(cchar *path, MprRomInode *inodes)
 Create and initialize the ROM FileSystem.
MprSocket*mprCreateSocket()
 Create a socket.
MprSpin*mprCreateSpinLock()
 Create a spin lock lock object.
struct MprSsl*mprCreateSsl(int server)
 Create the SSL control structure.
MprThread*mprCreateThread(cchar *name, void *proc, void *data, ssize stackSize)
 Create a new thread.
intmprCreateTimeService()
 Mpr time structure.
MprEvent*mprCreateTimerEvent(MprDispatcher *dispatcher, cchar *name, MprTicks period, void *proc, void *data, int flags)
 Create a timer event.
MprWaitHandler*mprCreateWaitHandler(int fd, int mask, MprDispatcher *dispatcher, void *proc, void *data, int flags)
 Create a wait handler.
char*mprCryptPassword(cchar *password, cchar *salt, int rounds)
 Encrypt a password using the Blowfish algorithm.
intmprDaemon()
 Convert the process into a daemon on unix systems.
voidmprDebug(cchar *tags, int level, cchar *fmt, ...)
 Write a log message to the log file when the product is built in debug mode.
char*mprDecode64(cchar *str)
 Decode a null terminated string using base-46 encoding.
char*mprDecode64Block(cchar *buf, ssize *len, int flags)
 Decode a null terminated string using base-46 encoding.
voidmprDecodeLocalTime(struct tm *timep, MprTime time)
 Decode a time value into a tokenized local time value.
voidmprDecodeUniversalTime(struct tm *timep, MprTime time)
 Decode a time value into a tokenized UTC time structure.
voidmprDedicateWorker(MprWorker *worker)
 Dedicate a worker thread to a current real thread.
voidmprDefaultLogHandler(cchar *tags, int level, cchar *msg)
 Default MPR log handler.
intmprDeletePath(cchar *path)
 Delete a file.
MprHash*mprDeserialize(cchar *str)
 Deserialize a simple JSON string and return a hash of properties.
MprHash*mprDeserializeInto(cchar *str, MprHash *hash)
 Deserialize a simple JSON string into the given hash object.
boolmprDestroy()
 Destroy the MPR and all services using the MPR.
void*mprDestroyCache(MprCache *cache)
 Destroy a new cache object.
voidmprDestroyCmd(MprCmd *cmd)
 Destroy the command.
voidmprDestroyDispatcher(MprDispatcher *dispatcher)
 Disable a dispatcher from service events.
voidmprDestroyWaitHandler(MprWaitHandler *wp)
 Destroy a wait handler.
voidmprDisableCmdEvents(MprCmd *cmd, int channel)
 Disable command I/O events.
voidmprDisableFileBuffering(MprFile *file)
 Disable file buffering.
voidmprDisconnectCmd(MprCmd *cmd)
 Disconnect a command its underlying I/O channels.
voidmprDisconnectSocket(MprSocket *sp)
 Disconnect a socket by closing its underlying file descriptor.
char*mprEmptyString()
 Reference to a permanent preallocated empty string.
voidmprEnableCmdEvents(MprCmd *cmd, int channel)
 Enable command I/O events.
voidmprEnableCmdOutputEvents(MprCmd *cmd, bool on)
 Enable command I/O events for the command's STDOUT and STDERR channels.
voidmprEnableContinuousEvent(MprEvent *event, int enable)
 Enable or disable an event being continous.
intmprEnableFileBuffering(MprFile *file, ssize size, ssize maxSize)
 Enable file buffering.
boolmprEnableGC(bool on)
 Enable or disable the garbage collector.
voidmprEnableSocketEvents(MprSocket *sp, int mask)
 Enable socket events for a socket callback.
char*mprEncode64(cchar *str)
 Encode a string using base-46 encoding.
char*mprEncode64Block(cchar *buf, ssize len)
 Encode buffer using base-46 encoding.
ssizemprEprintf(cchar *fmt, ...)
 Print a formatted message to the standard error channel.
voidmprError(cchar *fmt, ...)
 Log an error message.
char*mprEscapeCmd(cchar *cmd, int escChar)
 Encode a string escaping typical command (shell) characters.
char*mprEscapeHtml(cchar *html)
 Encode a string by escaping typical HTML characters.
char*mprEscapeSQL(cchar *cmd)
 Encode a string by escaping SQL special characters.
intmprExpireCacheItem(MprCache *cache, cchar *key, MprTicks expires)
 Set the expiry date for a cache item.
voidmprFinalizeCmd(MprCmd *cmd)
 Finalize the writing of data to the command process.
voidmprFlushBuf(MprBuf *buf)
 Flush the buffer contents.
intmprFlushFile(MprFile *file)
 Flush any buffered write data.
ssizemprFlushSocket(MprSocket *sp)
 Flush a socket.
voidmprFormatJsonName(MprBuf *buf, cchar *name, int flags)
 Format a JSON name into and output buffer.
voidmprFormatJsonString(MprBuf *buf, cchar *value)
 Format a string as a JSON string.
voidmprFormatJsonValue(MprBuf *buf, int type, cchar *value, int flags)
 Format a value as a simple JSON string.
char*mprFormatLocalTime(cchar *fmt, MprTime time)
 Convert a time value to local time and format as a string.
char*mprFormatTm(cchar *fmt, struct tm *timep)
 Format a time value as a local time.
char*mprFormatUniversalTime(cchar *fmt, MprTime time)
 Convert a time value to universal time and format as a string.
ssizemprFprintf(struct MprFile *file, cchar *fmt, ...)
 Print a formatted message to a file descriptor.
intmprGC(int flags)
 Collect garbage.
char*mprGetAbsPath(cchar *path)
 Convert a path to an absolute path.
ssizemprGetActiveCmdCount()
 Get the count of active commands.
cchar*mprGetAppDir()
 Get the application directory.
cchar*mprGetAppName()
 Get the application name defined via mprSetAppName.
cchar*mprGetAppPath()
 Get the application executable path.
cchar*mprGetAppTitle()
 Get the application title string.
cchar*mprGetAppVersion()
 Get the application version string.
ssizemprGetBlockFromBuf(MprBuf *buf, char *blk, ssize count)
 Get a block of data from the buffer.
size_tmprGetBlockSize(cvoid *ptr)
 Get the allocated size of a memory block.
char*mprGetBuf(MprBuf *buf)
 Get the origin of the buffer content storage.
char*mprGetBufEnd(MprBuf *buf)
 Get a reference to the end of the buffer contents.
ssizemprGetBufLength(MprBuf *buf)
 Get the buffer content length.
MprBufProcmprGetBufRefillProc(MprBuf *buf)
 Get the buffer refill procedure.
ssizemprGetBufSize(MprBuf *buf)
 Get the current size of the buffer content storage.
ssizemprGetBufSpace(MprBuf *buf)
 Get the space available to store content.
char*mprGetBufStart(MprBuf *buf)
 Get the start of the buffer contents.
ssizemprGetBusyWorkerCount()
 Get the count of workers in the busy queue.
uint64mprGetCPU()
 Return the process CPU usage.
voidmprGetCacheStats(MprCache *cache, int *numKeys, ssize *mem)
 Get the Cache statistics.
intmprGetCharFromBuf(MprBuf *buf)
 Get a character from the buffer.
MprBuf*mprGetCmdBuf(MprCmd *cmd, int channel)
 Get the underlying buffer for a channel.
intmprGetCmdExitStatus(MprCmd *cmd)
 Get the command exit status.
intmprGetCmdFd(MprCmd *cmd, int channel)
 Get the underlying file descriptor for an I/O channel.
boolmprGetCmdlineLogging()
 Get if command line logging is being used.
MprOsThreadmprGetCurrentOsThread()
 Get the O/S thread.
cchar*mprGetCurrentPath()
 Return the current working directory.
MprThread*mprGetCurrentThread()
 Get the currently executing thread.
cchar*mprGetCurrentThreadName()
 Return the name of the current thread.
MprWorker*mprGetCurrentWorker()
 Get the worker object if the current thread is actually a worker thread.
char*mprGetDate(char *fmt)
 Get a string representation of the current date/time.
boolmprGetDebugMode()
 Get the debug mode.
MprDispatcher*mprGetDispatcher()
 Get the MPR primary dispatcher.
cchar*mprGetDomainName()
 Get the application domain name string.
MprTicksmprGetElapsedTicks(MprTicks mark)
 Get the elapsed time since a ticks mark.
MprTimemprGetElapsedTime(MprTime mark)
 Get the elapsed time since a starting time mark.
intmprGetEndian()
 Return the endian byte ordering for the application.
intmprGetError()
 Return the error code for the most recent system or library operation.
int64mprGetEventMark(MprDispatcher *dispatcher)
 Get an event mark for a dispatcher.
intmprGetExitStatus()
 Get the exit status.
intmprGetFileChar(MprFile *file)
 Read a character from the file.
intmprGetFileFd(MprFile *file)
 Get the file descriptor for a file.
MprOffmprGetFilePosition(MprFile *file)
 Return the current file position.
MprOffmprGetFileSize(MprFile *file)
 Get the size of the file.
void*mprGetFirstItem(MprList *list)
 Get the first item in the list.
MprKey*mprGetFirstKey(MprHash *table)
 Return the first symbol in a symbol entry.
cchar*mprGetFirstPathSeparator(cchar *path)
 Get the first path separator in a path.
intmprGetHashLength(MprHash *table)
 Return the count of symbols in a symbol entry.
uint64mprGetHiResTicks()
 Get the CPU tick count.
cchar*mprGetHostName()
 Get the application host name string.
cchar*mprGetIpAddr()
 Get the application IP address string.
void*mprGetItem(MprList *list, int index)
 Get an list item.
cchar*mprGetJson(MprJson *obj, cchar *key)
 Get a JSON key and return a string value.
ssizemprGetJsonLength(MprJson *obj)
 Get the number of child properties in a JSON object.
MprJson*mprGetJsonObj(MprJson *obj, cchar *key)
 Get a parsed JSON object for a key value.
void*mprGetKey(cchar *key)
 Get a key value.
void*mprGetLastItem(MprList *list)
 Get the last item in the list.
intmprGetListCapacity(MprList *list)
 Get the current capacity of the list.
intmprGetListLength(MprList *list)
 Get the number of items in the list.
struct MprFile*mprGetLogFile()
 Get the log file object.
MprLogHandlermprGetLogHandler()
 Get the current MPR debug log handler.
intmprGetLogLevel()
 Get the current logging level.
char*mprGetMD5(cchar *str)
 Get an MD5 checksum.
char*mprGetMD5WithPrefix(cchar *buf, ssize len, cchar *prefix)
 Get an MD5 checksum with optional prefix string and buffer length.
intmprGetMaxWorkers()
 Get the maximum count of worker pool threads Get the maximum limit of worker pool threads.
size_tmprGetMem()
 Return the amount of memory currently used by the application.
MprMemStats*mprGetMemStats()
 Return the current allocation memory statistics block.
cchar*mprGetMimeProgram(MprHash *table, cchar *mimeType)
 Get the mime type program for a given mimeType.
cchar*mprGetModuleSearchPath()
 Get the module search path.
Mpr*mprGetMpr()
 Return the MPR control instance.
char*mprGetNativePath(cchar *path)
 Get a path formatted according to the native O/S conventions.
void*mprGetNextItem(MprList *list, int *lastIndex)
 Get the next item in the list.
MprKey*mprGetNextKey(MprHash *table, MprKey *last)
 Return the next symbol in a symbol entry.
void*mprGetNextStableItem(MprList *list, int *lastIndex)
 Get the next item in a stable list.
intmprGetOsError()
 Return the O/S error code.
intmprGetPageSize()
 Get the current O/S virtual page size.
char*mprGetPassword(cchar *prompt)
 Get a password from the terminal console.
char*mprGetPathBase(cchar *path)
 Get the base portion of a path.
cchar*mprGetPathBaseRef(cchar *path)
 Get a reference to the base portion of a path.
char*mprGetPathDir(cchar *path)
 Get the directory portion of a path.
char*mprGetPathExt(cchar *path)
 Get the file extension portion of a path.
MprList*mprGetPathFiles(cchar *dir, int flags)
 Create a list of files in a directory or subdirectories.
char*mprGetPathFirstDir(cchar *path)
 Get the first directory portion of a path.
intmprGetPathInfo(cchar *path, MprPath *info)
 Return information about a file represented by a path.
char*mprGetPathLink(cchar *path)
 Get the target of a symbolic link.
cchar*mprGetPathNewline(cchar *path)
 Get the file newline character string for a given path.
char*mprGetPathParent(cchar *path)
 Get the parent directory of a path.
charmprGetPathSeparator(cchar *path)
 Get the default path directory separator.
cchar*mprGetPathSeparators(cchar *path)
 Get the path directory separator.
char*mprGetPortablePath(cchar *path)
 Get a portable path.
void*mprGetPrevItem(MprList *list, int *lastIndex)
 Get the previous item in the list.
intmprGetRandomBytes(char *buf, ssize size, bool block)
 Get some random data.
char*mprGetRandomString(ssize size)
 Get some random data in ascii.
char*mprGetRelPath(cchar *dest, cchar *origin)
 Get a path relative to another path.
MprTicksmprGetRemainingTicks(MprTicks mark, MprTicks timeout)
 Return the time remaining until a timeout has elapsed.
MprRomInode*mprGetRomFiles()
 Get the ROM file system data.
char*mprGetSHA(cchar *str)
 Get an SHA1 checksum.
char*mprGetSHABase64(cchar *str)
 Get an SHA1 checksum of a null terminated string.
char*mprGetSHAWithPrefix(cchar *buf, ssize len, cchar *prefix)
 Get an SHA1 checksum with optional prefix string and buffer length.
cchar*mprGetServerName()
 Get the application server name string.
boolmprGetSocketBlockingMode(MprSocket *sp)
 Get the socket blocking mode.
intmprGetSocketError(MprSocket *sp)
 Get a socket error code.
SocketmprGetSocketHandle(MprSocket *sp)
 Get the socket file descriptor.
intmprGetSocketInfo(cchar *ip, int port, int *family, int *protocol, struct sockaddr **addr, Socklen *addrlen)
 Get the socket for an IP:Port address.
intmprGetSocketPort(MprSocket *sp)
 Get the port used by a socket.
char*mprGetSocketState(MprSocket *sp)
 Get the socket state.
intmprGetState()
 Get the MPR execution state.
MprFile*mprGetStderr()
 Return a file object for the Stderr I/O channel.
MprFile*mprGetStdin()
 Return a file object for the Stdin I/O channel.
MprFile*mprGetStdout()
 Return a file object for the Stdout I/O channel.
char*mprGetTempPath(cchar *tmpDir)
 Make a temporary file.
cchar*mprGetThreadName(MprThread *thread)
 Get the thread name.
intmprGetThreadPriority(MprThread *thread)
 Get the thread priroity.
MprTicksmprGetTicks()
 Get the system time.
MprTimemprGetTime()
 Get the time.
intmprGetTimeZoneOffset(MprTime when)
 Get the current timezone offset for a given time.
char*mprGetWinPath(cchar *path)
 Convert a path to an absolute windows path.
voidmprGetWorkerStats(MprWorkerStats *stats)
 Get the Worker service statistics.
MprList*mprGlobPathFiles(cchar *path, cchar *patterns, int flags)
 Create a list of files in a directory or subdirectories that match the given wildcard pattern.
voidmprGlobalLock()
 Globally lock the application.
voidmprGlobalUnlock()
 Unlock the global mutex.
intmprGrowBuf(MprBuf *buf, ssize count)
 Grow the buffer.
boolmprHasDualNetworkStack()
 has the system got a dual IPv4 + IPv6 network stack.
boolmprHasIPv6()
 Determine if the system support IPv6.
boolmprHasMemError()
 Determine if the MPR has encountered memory allocation errors.
boolmprHasSecureSockets()
 Determine if SSL is available.
char*mprHashKeysToString(MprHash *hash, cchar *join)
 Convert hash keys to a single string.
MprJson*mprHashToJson(MprHash *hash)
 Convert a hash object into a JSON object.
char*mprHashToString(MprHash *hash, cchar *join)
 Convert a hash of strings to a single string.
voidmprHiddenSocketData(MprSocket *sp, ssize len, int dir)
 Indicate that the application layer has buffered data for the socket.
voidmprHold(cvoid *ptr)
 Hold a memory block.
voidmprHoldBlocks(cvoid *ptr, ...)
 Hold memory blocks.
int64mprIncCache(MprCache *cache, cchar *key, int64 amount)
 Increment a numeric cache item.
voidmprInitFileSystem(MprFileSystem *fs, cchar *path)
 Create and initialize the FileSystem subsystem.
voidmprInitList(MprList *list, int flags)
 Initialize a list structure.
MprMutex*mprInitLock(MprMutex *mutex)
 Initialize a statically allocated Mutex lock object.
MprSpin*mprInitSpinLock(MprSpin *lock)
 Initialize a statically allocated spinlock object.
intmprInsertCharToBuf(MprBuf *buf, int c)
 Insert a character into the buffer.
intmprInsertItemAtPos(MprList *list, int index, cvoid *item)
 Insert an item into a list at a specific position.
boolmprIsAbsPathContained(cchar *path, cchar *dir)
 Fast version of mprIsPathContained that works only for absolute paths.
intmprIsCmdComplete(MprCmd *cmd)
 Test if a command is complete.
boolmprIsCmdRunning(MprCmd *cmd)
 Test if the command is still running.
boolmprIsDestroyed()
 Determine if the MPR has finished.
boolmprIsDestroying()
 Test if the application is terminating and core services are being destroyed All request should immediately terminate.
boolmprIsIPv6(cchar *ip)
 Determine if the IP address is an IPv6 address.
boolmprIsIdle(bool traceRequests)
 Determine if the App is idle.
intmprIsInfinite(double value)
 Test if a double value is infinte.
intmprIsNan(double value)
 Test if a double value is not-a-number.
boolmprIsPathAbs(cchar *path)
 Determine if a path is absolute.
boolmprIsPathContained(cchar *path, cchar *dir)
 Determine if a directory is the same as or a parent of a path.
boolmprIsPathDir(cchar *path)
 Determine if a path is a directory.
boolmprIsPathRel(cchar *path)
 Determine if a path is relative.
boolmprIsPathSeparator(cchar *path, cchar c)
 Test if a character is a path separarator.
boolmprIsSocketEof(MprSocket *sp)
 Test if the other end of the socket has been closed.
boolmprIsSocketSecure(MprSocket *sp)
 Determine if the socket is secure.
boolmprIsSocketV6(MprSocket *sp)
 Determine if the socket is using IPv6 Currently only works for server side addresses.
boolmprIsStopped()
 Test if the application is stopped If this routine returns true, the application shutdown has passed the point of no return.
boolmprIsStopping()
 Test if the application is stopping If mprIsStopping is true, the application has commenced a shutdown.
intmprIsValid(cvoid *ptr)
 Test is a pointer is a valid memory context.
intmprIsZero(double value)
 Test if a double value is zero.
char*mprJoinPath(cchar *base, cchar *path)
 Join paths.
char*mprJoinPathExt(cchar *path, cchar *ext)
 Join an extension to a path.
char*mprJoinPaths(cchar *base, ...)
 Join paths.
MprHash*mprJsonToHash(MprJson *json)
 Convert a JSON object into a Hash object.
char*mprJsonToString(MprJson *obj, int flags)
 Serialize a JSON object into a string.
char*mprListToString(MprList *list, cchar *join)
 Convert a list of strings to a single string.
SocketmprListenOnSocket(MprSocket *sp, cchar *ip, int port, int flags)
 Listen on a server socket for incoming connections.
MprJson*mprLoadJson(cchar *path)
 Load a JSON object from a filename.
intmprLoadModule(MprModule *mp)
 Load a module.
intmprLoadNativeModule(MprModule *mp)
 Load a native module.
intmprLoadSsl()
 Load the SSL module.
voidmprLock(MprMutex *lock)
 Lock access.
voidmprLog(cchar *tags, int level, cchar *fmt, ...)
 Write a message to the error log file.
voidmprLogConfig()
 Show the product configuration at the start of the log file.
voidmprLogJson(int level, MprJson *obj, cchar *fmt, ...)
 Trace the JSON object to the debug log.
intmprLookAtLastCharInBuf(MprBuf *buf)
 Peek at the last character in the buffer.
intmprLookAtNextCharInBuf(MprBuf *buf)
 Peek at the next character in the buffer.
char*mprLookupCache(MprCache *cache, cchar *key, MprTime *modified, int64 *version)
 Lookup an item in the cache.
MprFileSystem*mprLookupFileSystem(cchar *path)
 Lookup a file system.
intmprLookupItem(MprList *list, cvoid *item)
 Find an item and return its index.
void*mprLookupKey(MprHash *table, cvoid *key)
 Lookup a symbol in the hash table.
MprKey*mprLookupKeyEntry(MprHash *table, cvoid *key)
 Lookup a symbol in the hash table and return the hash entry.
cchar*mprLookupMime(MprHash *table, cchar *ext)
 Get the mime type for an extension.
MprModule*mprLookupModule(cchar *name)
 Lookup a module.
void*mprLookupModuleData(cchar *name)
 Lookup a module and return the module data.
intmprLookupStringItem(MprList *list, cchar *str)
 Find a string item and return its index.
intmprMakeArgv(cchar *command, cchar ***argv, int flags)
 Make a argv style array of command arguments.
intmprMakeDir(cchar *path, int perms, int owner, int group, bool makeMissing)
 Make a directory.
intmprMakeLink(cchar *path, cchar *target, bool hard)
 Make a link.
char*mprMakePassword(cchar *password, int saltLength, int rounds)
 Make a password hash for a plain-text password using the Blowfish algorithm.
char*mprMakeSalt(ssize size)
 Make salt for adding to a password.
voidmprMapSeparators(char *path, int separator)
 Map the separators in a path.
voidmprMark(void *ptr)
 Mark a memory block as in-use.
intmprMemcmp(cvoid *b1, size_t b1Len, cvoid *b2, size_t b2Len)
 Compare two byte strings.
size_tmprMemcpy(void *dest, size_t destMax, cvoid *src, size_t nbytes)
 Safe copy for a block of data.
void*mprMemdup(cvoid *ptr, size_t size)
 Duplicate a block of memory.
voidmprNap(MprTicks msec)
 Nap for a while.
boolmprNeedYield()
 Test if a thread should call mprYield.
char*mprNormalizePath(cchar *path)
 Normalize a path.
intmprNotifyOn(MprWaitHandler *wp, int mask)
 Begin I/O notification services on a wait handler.
MprFile*mprOpenFile(cchar *filename, int omode, int perms)
 Open a file.
intmprParseArgs(char *command, char **argv, int maxArgs)
 Make a argv style array of command arguments.
MprJson*mprParseJson(cchar *str)
 Parse a JSON string into an object tree.
MprJson*mprParseJsonEx(cchar *str, MprJsonCallback *callback, void *data, MprJson *obj, cchar **errorMsg)
 Extended JSON parsing from a JSON string into an object tree.
MprJson*mprParseJsonInto(cchar *str, MprJson *obj)
 Parse a JSON string into an existing object.
intmprParseSocketAddress(cchar *address, char **ip, int *port, int *secure, int defaultPort)
 Parse an socket address IP address.
boolmprPathExists(cchar *path, int omode)
 Determine if a file exists for a path name and can be accessed.
intmprPeekFileChar(MprFile *file)
 Non-destructively read a character from the file.
void*mprPopItem(MprList *list)
 Pop an item.
voidmprPrintMem(cchar *msg, int flags)
 Print a memory usage report to stdout.
ssizemprPrintf(cchar *fmt, ...)
 Formatted print.
char*mprPrintfCore(char *buf, ssize maxsize, cchar *fmt, va_list args)
 Format a string into a buffer.
voidmprPruneCache(MprCache *cache)
 Prune the cache.
intmprPushItem(MprList *list, cvoid *item)
 Push an item onto the list.
ssizemprPutBlockToBuf(MprBuf *buf, cchar *ptr, ssize size)
 Put a block to the buffer.
intmprPutCharToBuf(MprBuf *buf, int c)
 Put a character to the buffer.
ssizemprPutFileChar(MprFile *file, int c)
 Write a character to the file.
ssizemprPutFileString(MprFile *file, cchar *str)
 Write a string to the file.
ssizemprPutIntToBuf(MprBuf *buf, int64 i)
 Put an integer to the buffer.
ssizemprPutPadToBuf(MprBuf *buf, int c, ssize count)
 Put padding characters to the buffer.
ssizemprPutStringToBuf(MprBuf *buf, cchar *str)
 Put a string to the buffer.
ssizemprPutSubStringToBuf(MprBuf *buf, cchar *str, ssize count)
 Put a substring to the buffer.
ssizemprPutToBuf(MprBuf *buf, cchar *fmt, ...)
 Put a formatted string to the buffer.
MprJson*mprQueryJson(MprJson *obj, cchar *key, cchar *value, int type)
 Query a JSON object for a property key path and execute the given command.
voidmprQueueIOEvent(MprWaitHandler *wp)
 Queue an IO event for dispatch on the wait handler dispatcher.
intmprRandom()
 Return a random number.
char*mprReadCache(MprCache *cache, cchar *key, MprTime *modified, int64 *version)
 Read an item from the cache.
ssizemprReadCmd(MprCmd *cmd, int channel, char *buf, ssize bufsize)
 Make the I/O channels to send and receive data to and from the command.
ssizemprReadFile(MprFile *file, void *buf, ssize size)
 Read data from a file.
cchar*mprReadJson(MprJson *obj, cchar *name)
 Read a JSON property.
MprJson*mprReadJsonObj(MprJson *obj, cchar *name)
 Read a JSON object.
MprJson*mprReadJsonValue(MprJson *obj, cchar *value)
 Read a JSON object by value.
char*mprReadLine(MprFile *file, ssize size, ssize *len)
 Read a line from the file.
ssizemprReadSocket(MprSocket *sp, void *buf, ssize size)
 Read from a socket.
void*mprRealloc(void *ptr, size_t size)
 Reallocate a block.
intmprReapCmd(MprCmd *cmd, MprTicks timeout)
 Reap the command.
voidmprRecallWaitHandler(MprWaitHandler *wp)
 Recall a wait handler.
voidmprRecallWaitHandlerByFd(Socket fd)
 Recall a wait handler by fd.
intmprRefillBuf(MprBuf *buf)
 Refill the buffer with data.
voidmprRelease(cvoid *ptr)
 Release a memory block.
voidmprReleaseBlocks(cvoid *ptr, ...)
 Release a memory blocks.
voidmprReleaseWorker(MprWorker *worker)
 Release a worker thread.
boolmprRemoveCache(MprCache *cache, cchar *key)
 Remove items from the cache.
voidmprRemoveEvent(MprEvent *event)
 Remove an event.
intmprRemoveItem(MprList *list, cvoid *item)
 Remove an item from the list.
intmprRemoveItemAtPos(MprList *list, int index)
 Remove an item from the list.
MprJson*mprRemoveJson(MprJson *obj, cchar *key)
 Remove a property from a JSON object.
MprJson*mprRemoveJsonChild(MprJson *obj, MprJson *child)
 Remove a child from a JSON object WARNING: do not call this API when traversing the object in question using ITERATE_JSON.
intmprRemoveKey(MprHash *table, cvoid *key)
 Remove a symbol entry from the hash table.
intmprRemoveLastItem(MprList *list)
 Remove the last item from the list.
intmprRemoveRangeOfItems(MprList *list, int start, int end)
 Remove a range of items from the list.
voidmprRemoveRoot(cvoid *ptr)
 Remove a memory block as a root for garbage collection.
voidmprRemoveSocketHandler(MprSocket *sp)
 Remove a socket wait handler.
intmprRemoveStringItem(MprList *list, cchar *str)
 Remove a string item from the list.
voidmprRemoveWaitHandler(MprWaitHandler *wp)
 Remove a wait handler from the wait service.
char*mprReplacePathExt(cchar *path, cchar *ext)
 Replace an extension to a path.
voidmprRescheduleEvent(MprEvent *event, MprTicks period)
 Reschedule an event.
voidmprResetBufIfEmpty(MprBuf *buf)
 Reset the buffer.
voidmprResetCond(MprCond *cond)
 Reset a condition variable.
voidmprResetMemError()
 Reset the memory allocation error flag.
voidmprResetYield()
 Reset a sticky yield.
char*mprResolvePath(cchar *base, cchar *path)
 Resolve paths.
voidmprRestart()
 Restart the application.
voidmprRestartContinuousEvent(MprEvent *event)
 Restart an event.
intmprRun(MprDispatcher *dispatcher, cchar *command, cchar *input, char **output, char **error, MprTicks timeout)
 Run a simple blocking command using a string command line.
intmprRunCmd(MprCmd *cmd, cchar *command, cchar **envp, cchar *in, char **out, char **err, MprTicks timeout, int flags)
 Run a command using a string command line.
intmprRunCmdV(MprCmd *cmd, int argc, cchar **argv, cchar **envp, cchar *in, char **out, char **err, MprTicks timeout, int flags)
 Run a command using an argv[] array of arguments.
intmprSamePath(cchar *path1, cchar *path2)
 Compare two paths if they are the same.
intmprSamePathCount(cchar *path1, cchar *path2, ssize len)
 Compare two paths if they are the same for a given length.
intmprSaveJson(MprJson *obj, cchar *path, int flags)
 Save a JSON object to a filename.
char*mprSearchForModule(cchar *module)
 Search for a module on the current module path.
char*mprSearchPath(cchar *path, int flags, cchar *search, ...)
 Search for a path.
MprOffmprSeekFile(MprFile *file, int seekType, MprOff distance)
 Seek the I/O pointer to a new location in the file.
char*mprSerialize(MprHash *hash, int flags)
 Serialize a hash of properties as a JSON string.
intmprServiceEvents(MprTicks delay, int flags)
 Service events.
boolmprServicesAreIdle(bool traceRequests)
 Determine if the MPR services.
intmprSetAppName(cchar *name, cchar *title, cchar *version)
 Set the application name, title and version.
voidmprSetAppPath(cchar *path)
 Set the application executable path.
voidmprSetBufMax(MprBuf *buf, ssize maxSize)
 Set the maximum buffer size.
voidmprSetBufRefillProc(MprBuf *buf, MprBufProc fn, void *arg)
 Set the buffer refill procedure.
intmprSetBufSize(MprBuf *buf, ssize size, ssize maxSize)
 Set the buffer size.
voidmprSetCacheLimits(MprCache *cache, int64 keys, MprTicks lifespan, int64 memory, int resolution)
 Set the cache resource limits.
intmprSetCacheLink(MprCache *cache, cchar *key, void *link)
 Set a linked managed memory reference for a cached item.
voidmprSetCacheNotify(MprCache *cache, MprCacheProc notify)
 Set a notification callback to be invoked for events of interest on cached items.
voidmprSetCmdCallback(MprCmd *cmd, MprCmdProc callback, void *data)
 Define a callback to be invoked to receive response data from the command.
voidmprSetCmdDefaultEnv(MprCmd *cmd, cchar **env)
 Set the default environment to use for commands.
voidmprSetCmdDir(MprCmd *cmd, cchar *dir)
 Set the home directory for the command.
voidmprSetCmdEnv(MprCmd *cmd, cchar **env)
 Set the command environment.
voidmprSetCmdSearchPath(MprCmd *cmd, cchar *search)
 Set the default command search path.
boolmprSetCmdlineLogging(bool on)
 Set if command line logging was requested.
voidmprSetCurrentThreadPriority(int priority)
 Set the thread priroity for the current thread.
voidmprSetDebugMode(bool on)
 Turn on debug mode.
voidmprSetDomainName(cchar *s)
 Set the application domain name string.
voidmprSetEnv(cchar *key, cchar *value)
 Set an environment variable value.
voidmprSetError(int error)
 Set the error code.
voidmprSetEventServiceSleep(MprTicks delay)
 Set the maximum sleep time for the event service.
voidmprSetExitStatus(int status)
 Set the proposed exit status.
voidmprSetExitTimeout(MprTicks timeout)
 Set the exit timeout for a shutdown.
voidmprSetFilesLimit(int limit)
 Set the maximum number of open file/socket descriptors.
voidmprSetHostName(cchar *s)
 Set the application host name string.
MprIdleCallbackmprSetIdleCallback(MprIdleCallback idleCallback)
 Define a new idle callback to be invoked by mprIsIdle()
voidmprSetIpAddr(cchar *ip)
 Sete the application IP address string.
void*mprSetItem(MprList *list, int index, cvoid *item)
 Set a list item.
intmprSetJson(MprJson *obj, cchar *key, cchar *value, int type)
 Update a key/value in the JSON object with a string value.
voidmprSetJsonError(MprJsonParser *jp, cchar *fmt, ...)
 Signal a parse error in the JSON input stream.
intmprSetJsonObj(MprJson *obj, cchar *key, MprJson *value)
 Update a property in a JSON object.
voidmprSetKey(cchar *key, void *value)
 Store a key/value pair.
intmprSetListLimits(MprList *list, int initialSize, int maxSize)
 Define the list size limits.
voidmprSetLogBackup(ssize logSize, int backupCount, int flags)
 Set the log rotation parameters.
voidmprSetLogFile(struct MprFile *file)
 Set a file to be used for logging.
MprLogHandlermprSetLogHandler(MprLogHandler handler)
 Set an MPR debug log handler.
voidmprSetLogLevel(int level)
 Set the current logging verbosity level.
void*mprSetManager(void *ptr, MprManager manager)
 Update the manager for a block of memory.
intmprSetMaxSocketAccept(int max)
 Set the maximum number of accepted client connections that are permissable.
voidmprSetMaxWorkers(int count)
 Set the maximum count of worker threads Set the maximum number of worker pool threads for the MPR.
voidmprSetMemError()
 Set an memory allocation error condition on a memory context.
voidmprSetMemLimits(ssize warnHeap, ssize maximum, ssize cache)
 Configure the application memory limits.
voidmprSetMemNotifier(MprMemNotifier cback)
 Define a memory notifier.
voidmprSetMemPolicy(int policy)
 Set the memory allocation policy for when allocations fail.
intmprSetMimeProgram(MprHash *table, cchar *mimeType, cchar *program)
 Set the mime type program.
voidmprSetMinWorkers(int count)
 Set the minimum count of worker threads Set the count of threads the worker pool will have.
voidmprSetModuleFinalizer(MprModule *module, MprModuleProc stop)
 Define a module finalizer that will be called before a module is stopped.
voidmprSetModuleSearchPath(char *searchPath)
 Set the module search path.
voidmprSetModuleTimeout(MprModule *module, MprTicks timeout)
 Set a module timeout.
voidmprSetOsError(int error)
 Set the O/S error code.
voidmprSetPathNewline(cchar *path, cchar *newline)
 Set the file system new line character string.
voidmprSetPathSeparators(cchar *path, cchar *separators)
 Set the file system path separators.
voidmprSetServerName(cchar *s)
 Set the application server name string.
intmprSetSocketBlockingMode(MprSocket *sp, bool on)
 Set the socket blocking mode.
voidmprSetSocketDispatcher(MprSocket *sp, MprDispatcher *dispatcher)
 Set the dispatcher to use for socket events.
voidmprSetSocketEof(MprSocket *sp, bool eof)
 Set an EOF condition on the socket.
intmprSetSocketNoDelay(MprSocket *sp, bool on)
 Set the socket delay mode.
voidmprSetSslCaFile(struct MprSsl *ssl, cchar *caFile)
 Set the client certificate file to use for SSL.
voidmprSetSslCaPath(struct MprSsl *ssl, cchar *caPath)
 Set the path for the client certificate directory.
voidmprSetSslCertFile(struct MprSsl *ssl, cchar *certFile)
 Set certificate to use for SSL.
voidmprSetSslCiphers(MprSsl *ssl, cchar *ciphers)
 Set the ciphers to use.
voidmprSetSslHostname(MprSsl *ssl, cchar *hostname)
 Set the desired hostname for this SSL configuration when using SNI.
voidmprSetSslKeyFile(struct MprSsl *ssl, cchar *keyFile)
 Set the key file to use for SSL.
voidmprSetSslLogLevel(struct MprSsl *ssl, int level)
 Set the SSL log level at which to start tracing SSL events.
voidmprSetSslMatch(struct MprSsl *ssl, MprMatchSsl match)
 Set a match callback to select the appropriate SSL configuration to use in response to a client SNI hello.
voidmprSetSslProtocols(struct MprSsl *ssl, int protocols)
 Set the SSL protocol to use.
voidmprSetSslProvider(MprSocketProvider *provider)
 Set the SSL provider to use.
voidmprSetSslRenegotiate(MprSsl *ssl, bool enable)
 Control SSL session renegotiation.
voidmprSetSslRevoke(struct MprSsl *ssl, cchar *revoke)
 Define a list of certificates to revoke.
voidmprSetSslTicket(MprSsl *ssl, bool enable)
 Enable SSL session tickets.
voidmprSetThreadPriority(MprThread *thread, int priority)
 Set the thread priroity.
boolmprSetThreadYield(MprThread *tp, bool on)
 Set whether a thread can yield for GC.
voidmprSetWorkerStackSize(int size)
 Set the default worker stack size.
boolmprShouldAbortRequests()
 Test if requests should be aborted.
boolmprShouldDenyNewRequests()
 Test if new requests should be denied.
voidmprShutdown(int exitStrategy, int status, MprTicks timeout)
 Initiate shutdown of the MPR and application.
voidmprSignalCond(MprCond *cond)
 Signal a condition lock variable.
voidmprSignalDispatcher(MprDispatcher *dispatcher)
 Signal the dispatcher to wakeup and re-examine its queues.
voidmprSignalMultiCond(MprCond *cond)
 Signal a condition lock variable for use with multiple waiters.
voidmprSleep(MprTicks msec)
 Sleep for a while.
boolmprSocketHandshaking(MprSocket *sp)
 Test if the socket is doing an SSL handshake.
boolmprSocketHasBuffered(MprSocket *sp)
 Test if the socket has buffered data.
boolmprSocketHasBufferedRead(MprSocket *sp)
 Test if the socket has buffered read data.
boolmprSocketHasBufferedWrite(MprSocket *sp)
 Test if the socket has buffered write data.
void*mprSort(void *base, ssize num, ssize width, MprSortProc compare, void *ctx)
 Quicksort.
MprList*mprSortList(MprList *list, MprSortProc compare, void *ctx)
 Sort a list.
voidmprSpinLock(MprSpin *lock)
 Lock a spinlock.
voidmprSpinUnlock(MprSpin *lock)
 Unlock a spinlock.
intmprSslInit(void *unused, MprModule *module)
 Initialize the SSL provider.
intmprStart()
 Start the Mpr services.
intmprStartCmd(MprCmd *cmd, int argc, cchar **argv, cchar **envp, int flags)
 Start the command.
intmprStartDispatcher(MprDispatcher *dispatcher)
 Start a dispatcher by setting it on the run queue.
intmprStartEventsThread()
 Start an thread dedicated to servicing events.
intmprStartLogging(cchar *logSpec, int flags)
 Start logging.
intmprStartModule(MprModule *mp)
 Start a module.
intmprStartModuleService()
 Start the module service.
intmprStartOsService()
 Start the O/S dependent subsystem.
intmprStartThread(MprThread *thread)
 Start a thread.
intmprStartWorker(MprWorkerProc proc, void *data)
 Start a worker thread.
SocketmprStealSocketHandle(MprSocket *sp)
 Steal the socket handle.
intmprStopCmd(MprCmd *cmd, int signal)
 Stop the command.
voidmprStopContinuousEvent(MprEvent *event)
 Stop an event.
intmprStopDispatcher(MprDispatcher *dispatcher)
 Stop a dispatcher by removing it from the run queue.
intmprStopModule(MprModule *mp)
 Stop a module.
voidmprStopModuleService()
 Stop the module service.
voidmprStopOsService()
 Stop the O/S dependent subsystem.
voidmprSuspendThread(MprTicks timeout)
 Suspend the current thread.
char*mprTransformPath(cchar *path, int flags)
 Transform a path.
char*mprTrimPathComponents(cchar *path, int count)
 Trim path components from a path.
char*mprTrimPathDrive(cchar *path)
 Trim the drive from a path.
char*mprTrimPathExt(cchar *path)
 Trim an extension from a path.
intmprTruncateFile(cchar *path, MprOff size)
 Truncate a file.
boolmprTryLock(MprMutex *lock)
 Attempt to lock access.
boolmprTrySpinLock(MprSpin *lock)
 Attempt to lock access on a spin lock.
intmprUnloadModule(MprModule *mp)
 Unload a module.
intmprUnloadNativeModule(MprModule *mp)
 Unload a native module.
voidmprUnlock(MprMutex *lock)
 Unlock a mutex.
intmprUpgradeSocket(MprSocket *sp, struct MprSsl *ssl, cchar *peerName)
 Upgrade a socket to use SSL/TLS.
char*mprUriDecode(cchar *uri)
 Decode a URI string by de-scaping URI characters.
char*mprUriDecodeInSitu(char *uri)
 Decode a URI string by de-scaping URI characters.
char*mprUriEncode(cchar *uri, int map)
 Encode a string by escaping URI characters.
intmprUsingDefaultLogHandler()
 Determine if the app is using the default MPR log handler.
voidmprVerifySslDepth(struct MprSsl *ssl, int depth)
 Control the depth of SSL SSL certificate verification.
voidmprVerifySslIssuer(struct MprSsl *ssl, bool on)
 Control the verification of SSL certificate issuers.
voidmprVerifySslPeer(struct MprSsl *ssl, bool on)
 Require verification of peer certificates.
void*mprVirtAlloc(size_t size, int mode)
 Memory virtual memory into the applications address space.
voidmprVirtFree(void *ptr, size_t size)
 Free (unpin) a mapped section of virtual memory.
intmprWaitForCmd(MprCmd *cmd, MprTicks timeout)
 Wait for the command to complete.
intmprWaitForCond(MprCond *cond, MprTicks timeout)
 Wait for a condition lock variable.
intmprWaitForEvent(MprDispatcher *dispatcher, MprTicks timeout, int64 mark)
 Wait for an event to occur on the given dispatcher.
voidmprWaitForIO(MprWaitService *ws, MprTicks timeout)
 Wait for I/O.
intmprWaitForMultiCond(MprCond *cond, MprTicks timeout)
 Wait for a condition lock variable for use with multiple waiters.
intmprWaitForSingleIO(int fd, int mask, MprTicks timeout)
 Wait for I/O on a file descriptor.
voidmprWaitOn(MprWaitHandler *wp, int desiredMask)
 Subscribe for desired wait events.
voidmprWakeEventService()
 Wake the event service.
ssizemprWriteCache(MprCache *cache, cchar *key, cchar *value, MprTime modified, MprTicks lifespan, int64 version, int options)
 Write a cache item.
ssizemprWriteCmd(MprCmd *cmd, int channel, cchar *buf, ssize bufsize)
 Write data to an I/O channel.
ssizemprWriteCmdBlock(MprCmd *cmd, int channel, cchar *buf, ssize bufsize)
 Write data to an I/O channel.
ssizemprWriteFile(MprFile *file, cvoid *buf, ssize count)
 Write data to a file.
ssizemprWriteFileFmt(MprFile *file, cchar *fmt, ...)
 Write formatted data to a file.
ssizemprWriteFileString(MprFile *file, cchar *str)
 Write a string to a file.
intmprWriteJson(MprJson *obj, cchar *key, cchar *value, int type)
 Write a key/value in the JSON object with a string value.
intmprWriteJsonObj(MprJson *obj, cchar *key, MprJson *value)
 Write a property in a JSON object.
ssizemprWritePathContents(cchar *path, cchar *buf, ssize len, int mode)
 Create a file and write contents.
ssizemprWriteSocket(MprSocket *sp, cvoid *buf, ssize len)
 Write to a socket.
ssizemprWriteSocketString(MprSocket *sp, cchar *str)
 Write to a string to a socket.
ssizemprWriteSocketVector(MprSocket *sp, MprIOVec *iovec, int count)
 Write a vector to a socket.
cchar*mprXmlGetErrorMsg(MprXml *xp)
 Get the XML error message if mprXmlParse fails.
intmprXmlGetLineNumber(MprXml *xp)
 Get the source XML line number.
void*mprXmlGetParseArg(MprXml *xp)
 Get the XML callback argument.
MprXml*mprXmlOpen(ssize initialSize, ssize maxSize)
 Open an XML parser instance.
intmprXmlParse(MprXml *xp)
 Run the XML parser.
voidmprXmlSetInputStream(MprXml *xp, MprXmlInputStream fn, void *arg)
 Define the XML parser input stream.
voidmprXmlSetParseArg(MprXml *xp, void *parseArg)
 Set the XML callback argument.
voidmprXmlSetParserHandler(MprXml *xp, MprXmlHandler h)
 Set the XML parser data handle.
voidmprYield(int flags)
 Signify to the garbage collector that the thread is ready for garbage collection.
void*palloc(size_t size)
 Allocate a "permanent" block of memory that is not subject GC.
voidpfree(void *ptr)
 Free a "permanent" block of memory allocated via "palloc".
void*prealloc(void *ptr, size_t size)
 Reallocate a "permanent" block of memory allocated via "palloc".
ssizeprint(cchar *fmt, ...)
 Print to stdout and add a trailing newline.
size_tpsize(void *ptr)
 Return the size of the block.
char*scamel(cchar *str)
 Create a camel case version of the string.
intscaselesscmp(cchar *s1, cchar *s2)
 Compare strings ignoring case.
boolscaselessmatch(cchar *s1, cchar *s2)
 Compare strings ignoring case.
char*schr(cchar *str, int c)
 Find a character in a string.
char*sclone(cchar *str)
 Clone a string.
intscmp(cchar *s1, cchar *s2)
 Compare strings.
char*scontains(cchar *str, cchar *pattern)
 Find a pattern in a string.
ssizescopy(char *dest, ssize destMax, cchar *src)
 Copy a string.
cchar*sends(cchar *str, cchar *suffix)
 Test if the string ends with a given pattern.
voidserase(char *str)
 Erase the contents of a string.
char*sfmt(cchar *fmt, ...)
 Format a string.
char*sfmtv(cchar *fmt, va_list args)
 Format a string.
uintshash(cchar *str, ssize len)
 Compute a hash code for a string.
uintshashlower(cchar *str, ssize len)
 Compute a caseless hash code for a string.
char*sjoin(cchar *str, ...)
 Catenate strings.
cchar*sjoinArgs(int argc, cchar **argv, cchar *sep)
 Join an array of strings.
char*sjoinv(cchar *str, va_list args)
 Catenate strings.
ssizeslen(cchar *str)
 Return the length of a string.
char*slower(cchar *str)
 Convert a string to lower case.
boolsmatch(cchar *s1, cchar *s2)
 Compare strings.
intsncaselesscmp(cchar *s1, cchar *s2, ssize len)
 Compare strings ignoring case.
char*snclone(cchar *str, ssize len)
 Clone a substring.
intsncmp(cchar *s1, cchar *s2, ssize len)
 Compare strings.
char*sncontains(cchar *str, cchar *pattern, ssize limit)
 Find a pattern in a string with a limit.
ssizesncopy(char *dest, ssize destMax, cchar *src, ssize len)
 Copy characters from a string.
char*spbrk(cchar *str, cchar *set)
 Locate the a character from a set in a string.
char*sptok(char *str, cchar *pattern, char **last)
 Tokenize a string.
char*srchr(cchar *str, int c)
 Find a character in a string by searching backwards.
char*srejoin(char *buf, ...)
 Append strings to an existing string and reallocate as required.
char*srejoinv(char *buf, va_list args)
 Append strings to an existing string and reallocate as required.
char*ssplit(char *str, cchar *delim, char **last)
 Split a string at a delimiter.
ssizesspn(cchar *str, cchar *set)
 Find the end of a spanning prefix.
boolsstarts(cchar *str, cchar *prefix)
 Test if the string starts with a given pattern.
char*ssub(cchar *str, ssize offset, ssize length)
 Create a substring.
char*stemplate(cchar *str, struct MprHash *tokens)
 Replace template tokens in a string with values from a lookup table.
char*stemplateJson(cchar *str, struct MprJson *tokens)
 Replace template tokens in a string with values from a lookup table.
char*stitle(cchar *str)
 Create a Title Case version of the string.
doublestof(cchar *str)
 Convert a string to a double.
int64stoi(cchar *str)
 Convert a string to an integer.
int64stoiradix(cchar *str, int radix, int *err)
 Convert a string to an integer.
char*stok(char *str, cchar *delim, char **last)
 Tokenize a string.
struct MprList*stolist(cchar *src)
 String to list.
char*strim(cchar *str, cchar *set, int where)
 Trim a string.
char*supper(cchar *str)
 Convert a string to upper case.

Typedefs

MprBufProcBuffer refill callback function.
MprCacheProcCache item expiry callback.
MprCmdServiceCommand execution service.
MprCondCondition variable for single and multi-thread synchronization.
MprDirEntryDirectory entry description.
MprEventProcEvent callback function.
MprForkCallbackCallback function before doing a fork().
MprFreeMemBlock structure when on a free list.
MprFreeQueueFree queue head structure.
MprHashHash table control structure.
MprHashProcHashing function to use for the table.
MprHeapMemory allocator heap.
MprIOVecVectored write array.
MprJsonCallbackJSON parsing callbacks.
MprJsonParserJSON parser.
MprKeyValueKey value pairs for use with MprList or MprKey.
MprListCompareProcList comparison procedure for sorting.
MprLogHandlerLog handler callback type.
MprManagerMpr memory block manager prototype.
MprMemNotifierMemory allocation error callback.
MprMemStatsMemory allocator statistics.
MprModuleEntryLoadable module entry point signature.
MprModuleProcModule start/stop point function signature.
MprMutexMultithreading lock control structure.
MprOffSigned file offset data type.
MprRegionMemmory regions allocated from the O/S.
MprRomInodeA RomInode is created for each file in the Rom file system.
MprSignalInfoPer signal structure.
MprSignalProcSignal callback procedure.
MprSignalServiceSignal service control.
MprSocketPrebindCallback before binding a socket.
MprSocketProcSocket I/O callback procedure.
MprSocketProviderSocket service provider interface.
MprSocketServiceMpr socket service class.
MprSortProcQuicksort callback function.
MprSpinMultithreading spin lock control structure.
MprSslCallback function for SNI connections.
MprTerminatorService shutdown notifier.
MprThreadLocalThread local data storage.
MprThreadProcThread main procedure.
MprThreadServiceThread service.
MprTicksElapsed time data type.
MprWaitServiceWait Service.
MprWorkerProcWorker thread callback signature.
MprWorkerServiceWorker Thread Service.
MprWorkerStatsStatistics for Workers.
MprXmlHandlerXML callback handler.
MprXmlInputStreamXML input stream function.
SocketArgument for sockets.
size_tUnsigned integral type.

Defines

#defineME_MAX_EVENTS   32
 Maximum number of notifier events.
#defineME_MPR_LOGGING   1
 Default for logging is "on".
#defineME_MPR_MAX_PASSWORD   256
 Max password length.
#defineMPR_ALLOC_HOLD   0x4
 Allocate and hold.
#defineMPR_ALLOC_MANAGER   0x1
 Reserve room for a manager.
#defineMPR_ALLOC_PAD_MASK   0x1
 Flags that impact padding.
#defineMPR_ALLOC_POLICY_EXIT   3
 Exit the app if maxHeap exceeded.
#defineMPR_ALLOC_POLICY_NOTHING   0
 Do nothing.
#defineMPR_ALLOC_POLICY_PRUNE   1
 Prune all non-essential memory and continue.
#defineMPR_ALLOC_POLICY_RESTART   2
 Gracefully restart the app if memory maxHeap level is exceeded.
#defineMPR_ALLOC_ZERO   0x2
 Zero memory.
#defineMPR_ARGV_ARGS_ONLY   0x1
 Command is missing program name.
#defineMPR_BACKGROUND_PRIORITY   15
 May only get CPU if idle.
#defineMPR_CACHE_ADD   0x2
 mprWriteCache option to add key only if not already existing.
#defineMPR_CACHE_APPEND   0x8
 mprWriteCache option to set and append if already existing.
#defineMPR_CACHE_NOTIFY_CREATE   1
 Item has been created.
#defineMPR_CACHE_NOTIFY_REMOVE   2
 Item is about to be removed.
#defineMPR_CACHE_NOTIFY_UPDATE   4
 Item has been updated.
#defineMPR_CACHE_PREPEND   0x10
 mprWriteCache option to set and prepend if already existing.
#defineMPR_CACHE_SET   0x4
 mprWriteCache option to update key value, create if required.
#defineMPR_CACHE_SHARED   0x1
 Use shared cache for mprCreateCache()
#defineMPR_CG_DEFAULT   0x0
 mprGC flag to run GC if necessary.
#defineMPR_CMD_DETACH   0x4
 mprRunCmd flag to detach the child process and don't wait.
#defineMPR_CMD_ERR   0x4000
 mprRunCmd flag to capture stdout.
#defineMPR_CMD_EXACT_ENV   0x8
 mprRunCmd flag to use the exact environment (no inherit from parent).
#defineMPR_CMD_IN   0x1000
 mprRunCmd flag to connect to stdin.
#defineMPR_CMD_NEW_SESSION   0x1
 mprRunCmd flag to create a new session on unix.
#defineMPR_CMD_OUT   0x2000
 mprRunCmd flag to capture stdout.
#defineMPR_CMD_SHOW   0x2
 mprRunCmd flag to show the window of the created process on windows.
#defineMPR_CMD_STDERR   2
 Stderr for the client side.
#defineMPR_CMD_STDIN   0
 Stdout for the client side.
#defineMPR_CMD_STDOUT   1
 Stdin for the client side.
#defineMPR_CMD_VXWORKS_EOF   "_ _EOF_ _"
 Special string for VxWorks CGI to emit to signal EOF.
#defineMPR_CMD_VXWORKS_EOF_LEN   9
 Length of MPR_CMD_VXWORKS_EOF.
#defineMPR_CREATED   1
 Applicationa and MPR services started.
#defineMPR_CRITICAL_PRIORITY   99
 May not yield.
#defineMPR_DAEMON   0x10
 Make the process a daemon.
#defineMPR_DECODE_TOKEQ   1
 Decode base 64 blocks up to a NULL or equals.
#defineMPR_DEFAULT_DATE   "%a %b %d %T %Y %Z"
 Default date format used in mprFormatLocalTime/mprFormatUniversalTime when no format supplied.
#defineMPR_DEFAULT_MAX_THREADS   5
 Default max threads.
#defineMPR_DEFAULT_MIN_THREADS   0
 Default min threads.
#defineMPR_DELAY_GC_THREAD   0x8
 Delay starting the GC thread.
#defineMPR_DESTROYED   6
 Application and MPR object destroyed.
#defineMPR_DESTROYING   5
 Destroying core MPR services and releasing memory.
#defineMPR_DIAG   3
 Diagnostic trace level.
#defineMPR_DISABLE_GC   0x1
 Disable GC.
#defineMPR_DISPATCHER_AUTO   0x8
 Dispatcher was auto created in response to accept event.
#defineMPR_DISPATCHER_COMPLETE   0x10
 Test operation is complete.
#defineMPR_DISPATCHER_DESTROYED   0x4
 Dispatcher has been destroyed.
#defineMPR_DISPATCHER_IMMEDIATE   0x1
 Dispatcher should run using the service events thread.
#defineMPR_DISPATCHER_WAITING   0x2
 Dispatcher waiting for an event in mprWaitForEvent.
#defineMPR_ERR   -1
 Default error code.
#defineMPR_ERR_ABORTED   -2
 Action aborted.
#defineMPR_ERR_ALREADY_EXISTS   -3
 Item already exists.
#defineMPR_ERR_BAD_ARGS   -4
 Bad arguments or paramaeters.
#defineMPR_ERR_BAD_FORMAT   -5
 Bad input format.
#defineMPR_ERR_BAD_HANDLE   -6
 Bad file handle.
#defineMPR_ERR_BAD_STATE   -7
 Module is in a bad state.
#defineMPR_ERR_BAD_SYNTAX   -8
 Input has bad syntax.
#defineMPR_ERR_BAD_TYPE   -9
 Bad object type.
#defineMPR_ERR_BAD_VALUE   -10
 Bad or unexpected value.
#defineMPR_ERR_BASE   -1
 Base error code.
#defineMPR_ERR_BUSY   -11
 Resource is busy.
#defineMPR_ERR_CANT_ACCESS   -12
 Cannot access the file or resource.
#defineMPR_ERR_CANT_ALLOCATE   -13
 Cannot allocate resource.
#defineMPR_ERR_CANT_COMPLETE   -14
 Operation cannot complete.
#defineMPR_ERR_CANT_CONNECT   -15
 Cannot connect to network or resource.
#defineMPR_ERR_CANT_CREATE   -16
 Cannot create the file or resource.
#defineMPR_ERR_CANT_DELETE   -17
 Cannot delete the resource.
#defineMPR_ERR_CANT_FIND   -18
 Cannot find resource.
#defineMPR_ERR_CANT_INITIALIZE   -19
 Cannot initialize resource.
#defineMPR_ERR_CANT_LOAD   -20
 Cannot load the resource.
#defineMPR_ERR_CANT_OPEN   -21
 Cannot open the file or resource.
#defineMPR_ERR_CANT_READ   -22
 Cannot read from the file or resource.
#defineMPR_ERR_CANT_WRITE   -23
 Cannot write to the file or resource.
#defineMPR_ERR_DELETED   -24
 Resource has been deleted.
#defineMPR_ERR_MEMORY   -25
 Memory allocation error.
#defineMPR_ERR_NETWORK   -26
 Underlying network error.
#defineMPR_ERR_NOT_INITIALIZED   -27
 Module or resource is not initialized.
#defineMPR_ERR_NOT_READY   -28
 Resource is not ready.
#defineMPR_ERR_OK   0
 Success.
#defineMPR_ERR_READ_ONLY   -29
 The operation timed out.
#defineMPR_ERR_TIMEOUT   -30
 Operation exceeded specified time allowed.
#defineMPR_ERR_TOO_MANY   -31
 Too many requests or resources.
#defineMPR_ERR_WONT_FIT   -32
 Requested operation won't fit in available space.
#defineMPR_ERR_WOULD_BLOCK   -33
 Blocking operation would block.
#defineMPR_ERROR   0
 Standard logging trace levels are 0 to 5 with 0 being the least verbose.
#defineMPR_EVENT_ASYNC   1
 Windows async select.
#defineMPR_EVENT_CONTINUOUS   0x1
 Timer event runs is automatically rescheduled.
#defineMPR_EVENT_DONT_QUEUE   0x4
 Don't queue the event.
#defineMPR_EVENT_EPOLL   2
 epoll_wait.
#defineMPR_EVENT_HOLD   0x20
 Hold the event object to prevent from GC.
#defineMPR_EVENT_KQUEUE   3
 BSD kqueue.
#defineMPR_EVENT_PRIORITY   50
 Normal priority.
#defineMPR_EVENT_QUICK   0x2
 Execute inline without executing via a thread.
#defineMPR_EVENT_RUNNING   0x10
 Event currently executing.
#defineMPR_EVENT_SELECT   4
 traditional select().
#defineMPR_EVENT_STATIC_DATA   0x8
 Event data is permanent and should not be marked by GC.
#defineMPR_EVENT_TIME_SLICE   20 /* 20 msec */
 Events.
#defineMPR_EXIT_ABORT   0x1
 Abort everything and call exit().
#defineMPR_EXIT_NORMAL   0x0
 Normal (graceful) exit.
#defineMPR_EXIT_RESTART   0x4
 Restart after exiting.
#defineMPR_EXIT_SAFE   0x2
 Graceful shutdown only if all requests complete.
#defineMPR_EXIT_TIMEOUT   -1
 Use timeout specified via mprSetExitTimeout
#defineMPR_GC_COMPLETE   0x4
 mprGC flag to force start a GC and wait until the GC cycle fully completes including sweep phase.
#defineMPR_GC_FORCE   0x1
 mprGC flag to force start a GC sweep whether it is required or not.
#defineMPR_GC_NO_BLOCK   0x2
 mprGC flag to run GC if ncessary and return without yielding.
#defineMPR_HASH_CASELESS   0x10
 Key comparisons ignore case.
#defineMPR_HASH_STABLE   0x400
 Contents are stable or only accessed by one thread.
#defineMPR_HASH_STATIC_KEYS   0x40
 Keys are permanent - don't dup or mark.
#defineMPR_HASH_STATIC_VALUES   0x80
 Values are permanent - don't mark.
#defineMPR_HASH_UNICODE   0x20
 Hash keys are unicode strings.
#defineMPR_HASH_UNIQUE   0x200
 Add to existing will fail.
#defineMPR_HTTP_DATE   "%a, %d %b %Y %T GMT"
 Date format for use in HTTP (headers).
#defineMPR_INFO   2
 Information trace level.
#defineMPR_JSON_APPEND   0x4
 Default to append to existing '+' (default).
#defineMPR_JSON_ARRAY   0x2
 The property is an array.
#defineMPR_JSON_COMBINE   0x1
 Combine properties using '+' '-' '=' '?' prefixes.
#defineMPR_JSON_CREATE   0x10
 Create if not already existing '?'.
#defineMPR_JSON_DATA_TYPE   0xFF8
 Mask for core type of obj (obj|array|value).
#defineMPR_JSON_FALSE   0x8
 The property is false.
#defineMPR_JSON_NULL   0x10
 The property is null.
#defineMPR_JSON_NUMBER   0x20
 The property is a number.
#defineMPR_JSON_OBJ   0x1
 The property is an object.
#defineMPR_JSON_OBJ_TYPE   0x7
 Mask for core type of obj (obj|array|value).
#defineMPR_JSON_OVERWRITE   0x2
 Default to overwrite existing properties '='.
#defineMPR_JSON_PRETTY   0x1
 Serialize output in a more human readable, multiline "pretty" format.
#defineMPR_JSON_QUOTES   0x2
 Serialize output quoting keys.
#defineMPR_JSON_REGEXP   0x40
 The property is a regular expression.
#defineMPR_JSON_REPLACE   0x8
 Replace existing properties '-'.
#defineMPR_JSON_STRING   0x80
 The property is a string.
#defineMPR_JSON_STRINGS   0x4
 Emit all values as quoted strings.
#defineMPR_JSON_TRUE   0x100
 The property is true.
#defineMPR_JSON_UNDEFINED   0x200
 The property is undefined.
#defineMPR_JSON_VALUE   0x4
 The property is a value (false|true|null|undefined|regexp|number|string).
#defineMPR_LIST_STABLE   0x40
 Contents are stable or only accessed by one thread.
#defineMPR_LIST_STATIC_VALUES   0x20
 Flag for mprCreateList when values are permanent.
#defineMPR_LOCAL_TIMEZONE   MAXINT
 Constants for mprParseTime.
#defineMPR_LOG_ANEW   0x1
 Start anew on restart after backup.
#defineMPR_LOG_CMDLINE   0x4
 Command line log switch uses.
#defineMPR_LOG_CONFIG   0x2
 Show the configuration at the start of the log.
#defineMPR_LOG_DATE   "%D %T"
 Date for use in log files (compact).
#defineMPR_LOG_DETAILED   0x8
 Use detailed log formatting with timestamps and tags.
#defineMPR_LOG_TAGGED   0x10
 Use tagged message formatting.
#defineMPR_MANAGE_FREE   0x1
 Block being freed.
#defineMPR_MANAGE_MARK   0x2
 Block being marked by GC.
#defineMPR_MAX_FILE   256
 Maximum number of files to close when forking.
#defineMPR_MEM_FAIL   0x4
 Memory allocation failed - immediate exit.
#defineMPR_MEM_LIMIT   0x2
 Memory use exceeds memory limit - invoking policy.
#defineMPR_MEM_TOO_BIG   0x8
 Memory allocation request is too big - immediate exit.
#defineMPR_MEM_WARNING   0x1
 Memory use exceeds warnHeap level limit.
#defineMPR_MIN_TIME_FOR_GC   2
 Wait till 2 milliseconds of idle time possible.
#defineMPR_MODULE_STARTED   0x1
 Module stared.
#defineMPR_MODULE_STOPPED   0x2
 Module stopped.
#defineMPR_NO_WINDOW   0x4
 Don't create a windows Window.
#defineMPR_NORMAL_PRIORITY   50
 Normal (default) priority.
#defineMPR_NOT_ALL   0x20
 Don't invoke all destructors when terminating.
#defineMPR_OBJ_HASH   0x1
 Object is a hash.
#defineMPR_OBJ_LIST   0x1
 Object is a hash.
#defineMPR_PATH_DEPTH_FIRST   0x2
 Flag for mprGetPathFiles to do a depth-first traversal.
#defineMPR_PATH_DESCEND   0x1
 Flag for mprGetPathFiles to traverse subdirectories.
#defineMPR_PATH_INC_HIDDEN   0x4
 Flag for mprGetPathFiles to include hidden files.
#defineMPR_PATH_NO_DIRS   0x8
 Flag for mprGetPathFiles to exclude subdirectories.
#defineMPR_PATH_RELATIVE   0x10
 Flag for mprGetPathFiles to return paths relative to the directory.
#defineMPR_PROTO_ALL   0x2F
 All protocols.
#defineMPR_PROTO_SSLV2   0x1
 SSL V2 protocol.
#defineMPR_PROTO_SSLV3   0x2
 SSL V3 protocol.
#defineMPR_PROTO_TLSV1_0   0x8
 TLS V1.0 protocol.
#defineMPR_PROTO_TLSV1_1   0x10
 TLS V1.1 protocol.
#defineMPR_PROTO_TLSV1_2   0x20
 TLS V1.2 protocol.
#defineMPR_READABLE   0x2
 Read event mask.
#defineMPR_REQUEST_PRIORITY   50
 Normal priority.
#defineMPR_RFC3399_DATE   "%FT%TZ"
 Date format for RFC 3399 for use in HTML 5.
#defineMPR_RFC_DATE   "%a, %d %b %Y %T %Z"
 Format a date according to RFC822: (Fri, 07 Jan 2003 12:12:21 PDT).
#defineMPR_SERVICE_NO_BLOCK   0x4
 Do not block in mprServiceEvents.
#defineMPR_SERVICE_NO_GC   0x8
 Don't run GC.
#defineMPR_SIGNAL_AFTER   0x2
 Flag to mprAddSignalHandler to run handler after existing handlers.
#defineMPR_SIGNAL_BEFORE   0x1
 Flag to mprAddSignalHandler to run handler before existing handlers.
#defineMPR_SOCKET_BLOCK   0x1
 Use blocking I/O.
#defineMPR_SOCKET_BROADCAST   0x2
 Broadcast mode.
#defineMPR_SOCKET_BUFFERED_READ   0x800
 Socket has buffered read data (in SSL stack).
#defineMPR_SOCKET_BUFFERED_WRITE   0x1000
 Socket has buffered write data (in SSL stack).
#defineMPR_SOCKET_CERT_ERROR   0x10000
 Error when validating peer certificate.
#defineMPR_SOCKET_CLOSED   0x4
 MprSocket has been closed.
#defineMPR_SOCKET_CONNECTING   0x8
 MprSocket is connecting.
#defineMPR_SOCKET_DATAGRAM   0x10
 Use datagrams.
#defineMPR_SOCKET_DISCONNECTED   0x4000
 The mprDisconnectSocket has been called.
#defineMPR_SOCKET_EOF   0x20
 Seen end of file.
#defineMPR_SOCKET_GRACEFUL   1
 Do a graceful shutdown.
#defineMPR_SOCKET_HANDSHAKING   0x8000
 Doing an SSL handshake.
#defineMPR_SOCKET_LISTENER   0x40
 MprSocket is server listener.
#defineMPR_SOCKET_NODELAY   0x100
 Disable Nagle algorithm.
#defineMPR_SOCKET_NOREUSE   0x80
 Don't set SO_REUSEADDR option.
#defineMPR_SOCKET_SERVER   0x400
 Socket is on the server-side.
#defineMPR_SOCKET_THREAD   0x200
 Process callbacks on a worker thread.
#defineMPR_STARTED   2
 Applicationa and MPR services started.
#defineMPR_STOPPED   4
 App is idle and now stopped.
#defineMPR_STOPPING   3
 App has been instructed to shutdown.
#defineMPR_TIMEOUT_GC_SYNC   100
 Short wait period for threads to synchronize.
#defineMPR_TIMEOUT_LINGER   2000
 Close socket linger timeout.
#defineMPR_TIMEOUT_NAP   20
 Short pause.
#defineMPR_TIMEOUT_NO_BUSY   1000
 Wait period to minimize CPU drain.
#defineMPR_TIMEOUT_PRUNER   120000
 Time between worker thread pruner runs (2 min).
#defineMPR_TIMEOUT_START_TASK   10000
 Time to start tasks running.
#defineMPR_TIMEOUT_STOP   30000
 Default wait when stopping resources (30 sec).
#defineMPR_TIMEOUT_STOP_TASK   10000
 Time to stop or reap tasks (vxworks).
#defineMPR_TIMEOUT_WORKER   60000
 Prune worker that has been idle for 1 min.
#defineMPR_TRIM_BOTH   0x3
 Flag for strim to trim from both the start and the end of the string.
#defineMPR_TRIM_END   0x2
 Flag for strim to trim from the end of the string.
#defineMPR_TRIM_START   0x1
 Flag for strim to trim from the start of the string.
#defineMPR_USER_EVENTS_THREAD   0x2
 User will explicitly manage own mprServiceEvents calls.
#defineMPR_UTC_TIMEZONE   0
 Use UTC timezone.
#defineMPR_VERBOSE   5
 Highest level of trace.
#defineMPR_WAIT_IMMEDIATE   0x4
 Wait handler flag to immediately service event on same thread.
#defineMPR_WAIT_NEW_DISPATCHER   0x2
 Wait handler flag to create a new dispatcher for each I/O event.
#defineMPR_WAIT_NOT_SOCKET   0x8
 I/O file descriptor is not a socket - windows will ignore.
#defineMPR_WAIT_RECALL_HANDLER   0x1
 Wait handler flag to recall the handler asap.
#defineMPR_WARN   1
 Soft warning trace level.
#defineMPR_WORKER_BUSY   0x1
 Worker currently running to a callback.
#defineMPR_WORKER_IDLE   0x4
 Worker is sleeping (idle) on idleCond.
#defineMPR_WORKER_PRIORITY   50
 Normal priority.
#defineMPR_WORKER_PRUNED   0x2
 Worker has been pruned and will be terminated.
#defineMPR_WRITABLE   0x4
 Write event mask.
#defineMPR_XML_AFTER_LS   2
 Seen "<".
#defineMPR_XML_ATT_EQ   6
 Seen "<tag att" =.
#defineMPR_XML_ATT_NAME   5
 Seen "<tag att".
#defineMPR_XML_BEGIN   1
 Before next tag.
#defineMPR_XML_CDATA   13
 Seen "<![CDATA[" U.
#defineMPR_XML_COMMENT   3
 Seen "<!&ndash;" (usr) U.
#defineMPR_XML_ELT_DATA   10
 Seen "<tag>....<" U.
#defineMPR_XML_ELT_DEFINED   9
 Seen "<tag...>" U.
#defineMPR_XML_END_ELT   11
 Seen "<tag>....</tag>" U.
#defineMPR_XML_EOF   -2
 End of input.
#defineMPR_XML_ERR   -1
 Error.
#defineMPR_XML_NEW_ATT   7
 Seen "<tag att = "val" U.
#defineMPR_XML_NEW_ELT   4
 Seen "<tag" (usr) U.
#defineMPR_XML_PI   12
 Seen "<?processingInst" U.
#defineMPR_XML_SOLO_ELT_DEFINED   8
 Seen "<tag../>" U.
#defineMPR_YIELD_COMPLETE   0x1
 mprYield flag to wait until the GC entirely completes including sweep phase.
#defineMPR_YIELD_DEFAULT   0x0
 mprYield flag if GC is required, yield and wait for mark phase to coplete, otherwise return without blocking.
#defineMPR_YIELD_STICKY   0x2
 mprYield flag to yield and remain yielded until reset.

Mpr

Mpr

Primary MPR application control structure.

Description:
The Mpr structure stores critical application state information.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
API Stability:
Internal.
Fields:
cchar *appDir Path of directory containing app executable.
cchar *appPath Path name of application executable.
void *appwebService Appweb service object.
char **argBuf Space for allocated argv.
intargc Count of command line args.
cchar **argv Application command line args (not alloced).
struct MprCmdService *cmdService Command service object.
MprCond *cond Sync after starting events thread.
booldebugMode Run in debug mode (no timers).
struct MprDispatcher *dispatcher Primary dispatcher.
char *domainName Domain portion.
void *ediService EDI object.
void *ejsService Ejscript service.
char *emptyString "" string.
void *espService ESP service object.
inteventing Servicing events thread is active.
struct MprEventService *eventService Event service object.
intexitStrategy How to exit the app.
MprTicksexitTimeout Request timeout when exiting.
MprList *fileSystems File system objects.
intflags Misc flags.
inthasError Mpr has an initialization error.
MprHeap *heap Memory heap control.
char *hostName Host name (fully qualified name).
void *httpService Http service object.
MprIdleCallbackidleCallback Invoked to determine if the process is idle.
char *ip Public IP Address.
MprHash *keys Simple key/value store.
intlogBackup Number of log files preserved when backing up.
MprFile *logFile Log file.
MprLogHandlerlogHandler Current log handler callback.
intlogLevel Log trace level.
cchar *logPath Log path name.
ssizelogSize Maximum log size.
MprOsThreadmainOsThread Main OS thread ID.
MprHash *mimeTypes Table of mime types.
struct MprModuleService *moduleService Module service object.
MprMutex *mutex Thread synchronization used for global lock.
char *name Product name.
struct MprDispatcher *nonBlock Nonblocking dispatcher.
char *oneString "1" string.
struct MprOsService *osService O/S service object.
char *pathEnv Cached PATH env var. Used by MprCmd.
MprFileSystem *romfs Rom file system object.
char *serverName Server name portion (no domain).
MprTicksshutdownStarted When the shutdown started.
struct MprSignalService *signalService Signal service object.
struct MprSocketService *socketService Socket service object.
MprSpin *spin Quick thread synchronization.
MprTimestart When the MPR started.
MprFile *stdError Standard error file.
MprFile *stdInput Standard input file.
MprFile *stdOutput Standard output file.
MprCond *stopCond Sync for stopping.
MprList *terminators Termination callbacks.
struct MprThreadService *threadService Thread service object.
MprHash *timeTokens Date/Time parsing tokens.
char *title Product title.
intverifySsl Default verification of SSL certificates.
char *version Product version.
struct MprWaitService *waitService IO Waiting service object.
struct MprWorkerService *workerService Worker service object.
void assert (bool cond)
void mprAddTerminator (MprTerminator terminator)

Add a service terminator.

Description:
Services may create shutdown notifiers called terminators that are informed when the application commences a shutdown. The terminator may be invoked several times and the service should take appropriate action based on the MPR state.

If the state parameter is set to MPR_STOPPING, the service should not accept any new requests, but otherwise not take any destructive actions. Note this state is required to be reversible if the shutdown is cancelled.

If the state is MPR_STOPPED, the service should cancel all running requests, close files and connections and release all resources. This state is not reversible.

This exitStrategy parameter is a flags word that defines the shutdown exit strategy. See mprShutdown for details.

Services may also call mprShouldDenyNewRequests to test if the MPR state is MPR_STOPPING and mprShouldAbortRequests if the state is MPR_STOPPED.
Parameters:
terminatorMprTerminator callback function.
API Stability:
Stable.
See Also:
mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
void mprBreakpoint ()
bool mprCancelShutdown ()

Cancel a shutdown request.

Description:
A graceful shutdown request initiated via mprShutdown may be cancelled if the shutdown is still in progress and has not passed the point of no return. If the MPR is still in the MPR_STOPPING state, the shutdown may be cancelled. See mprGetState
Returns:
True if the shutdown can be cancelled. Returns false if a shutdown has not been requested or if the shutdown has advanced past the point of no return.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
bool mprCheckPassword (cchar *plainTextPassword, cchar *passwordHash)
Mpr * mprCreate (int argc, char **argv, int flags)

Initialize the application by creating an instance of the MPR.

Description:
Initializes the MPR and creates an Mpr control object. The Mpr Object manages all MPR facilities and services. This must be called before using any MPR API. When processing is complete, you should call mprDestroy before exiting the application.
Parameters:
argcCount of command line args.
argvCommand line arguments for the application. Arguments may be passed into the Mpr for retrieval by the unit test framework.
flagsSet MPR_USER_EVENTS_THREAD if you will manage calling mprServiceEvents manually if required. There are three styles of MPR applications with respect to servicing events:

1) Applications that don't require servicing events for I/O, commands or timers

2) Applications that call mprServiceEvents directly from their main program

3) Applications that have a dedicated service events thread

Applications that do not perform I/O, run commands or create events may not need a service events thread. While creating one will do no harm, performance may be enhanced for these applications by specifying MPR_USER_EVENTS_THREAD.

Applications that have not forground processing requirements may invoke mprServiceEvents from their main program instead of creating a service events thread. This saves one thread.

The default is to create a service events thread so the full scope of MPR services are supported.
Returns:
Returns a pointer to the Mpr object.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
int mprCreateOsService ()
char * mprCryptPassword (cchar *password, cchar *salt, int rounds)
int mprDaemon ()
char * mprDecode64 (cchar *str)
char * mprDecode64Block (cchar *buf, ssize *len, int flags)
bool mprDestroy ()

Destroy the MPR and all services using the MPR.

Description:
This call terminates the MPR and all services.

An application initializes the MPR by calling mprCreate. This creates the Mpr object, the memory allocator, garbage collector and other services. An application exits by invoking mprDestroy or by calling mprShutdown then mprDestroy.

There are two styles of MPR applications with respect to shutdown:

1) Applications that have a dedicated service events thread.

2) Applications that call mprServiceEvents directly from their main program.

Applications that have a service events thread can call mprDestroy directly from their main program when ready to exit. Applications that call mprServiceEvents from their main program will typically have some other MPR thread call mprShutdown to initiate a shutdown sequence. This will stop accepting new requests or connections and when the application is idle, the mprServiceEvents routine will return and then the main program can call then call mprDestroy.

Once the shutdown conditions are satisfied, a thread executing mprServiceEvents will return from that API and then the application should call mprDestroy and exit().

If an application needs to tailor how it exits with respect to current requests, use mprShutdown first to specify a shutdown strategy.
Returns:
True if the MPR can be destroyed. Returns false if the exit strategy MPR_EXIT_SAFE has been defined via mprShutdown and current requests have not completed within the exit timeout period defined by mprSetExitTimeout. In this case, the shutdown is cancelled and normal operations continue.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
char * mprEmptyString ()
char * mprEncode64 (cchar *str)
char * mprEncode64Block (cchar *buf, ssize len)
char * mprEscapeCmd (cchar *cmd, int escChar)
char * mprEscapeHtml (cchar *html)
char * mprEscapeSQL (cchar *cmd)
cchar * mprGetAppDir ()
cchar * mprGetAppName ()
cchar * mprGetAppPath ()
cchar * mprGetAppTitle ()
cchar * mprGetAppVersion ()
bool mprGetCmdlineLogging ()
bool mprGetDebugMode ()
cchar * mprGetDomainName ()
int mprGetEndian ()
int mprGetError ()
int mprGetExitStatus ()
cchar * mprGetHostName ()
cchar * mprGetIpAddr ()
void * mprGetKey (cchar *key)
int mprGetLogLevel ()
char * mprGetMD5 (cchar *str)
char * mprGetMD5WithPrefix (cchar *buf, ssize len, cchar *prefix)
Mpr * mprGetMpr ()
int mprGetOsError ()
char * mprGetPassword (cchar *prompt)
int mprGetRandomBytes (char *buf, ssize size, bool block)
char * mprGetRandomString (ssize size)
cchar * mprGetServerName ()
char * mprGetSHA (cchar *str)
char * mprGetSHABase64 (cchar *str)
char * mprGetSHAWithPrefix (cchar *buf, ssize len, cchar *prefix)
int mprGetState ()
bool mprIsDestroyed ()
bool mprIsDestroying ()
bool mprIsIdle (bool traceRequests)

Determine if the App is idle.

Description:
This call returns true if the App is not currently servicing any requests. By default this returns true if the MPR dispatcher, worker thread and command subsytems are idle. Callers can replace or augment the standard idle testing by definining a new idle callback via mprSetIdleCallback.

Note: this routine tests for worker threads but ignores other threads created via mprCreateThread
Parameters:
traceRequestsIf true, emit trace regarding running requests.
Returns:
True if the App are idle.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
bool mprIsStopped ()

Test if the application is stopped If this routine returns true, the application shutdown has passed the point of no return.

No new requests should be accepted and current requests should be aborted. Use #mprIsStopping to test if shutdown has been initiated but current requests may continue. Use #mprIsDestroyed to test if the application has completed its shutdown
Returns:
True if the application is in the process of exiting.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
bool mprIsStopping ()
int mprMakeArgv (cchar *command, cchar ***argv, int flags)

Make a argv style array of command arguments.

Description:
The given command is parsed and broken into separate arguments and returned in a null-terminated, argv array. Arguments in the command may be quoted with single or double quotes to group words into one argument. Use back-quote "\\" to escape quotes. This routine allocates memory and must not be called before mprCreate. Consider mprParseArgs if you need to convert a command line before calling mprCreate
Parameters:
commandCommand string to parse.
argvOutput parameter containing the parsed arguments.
flagsSet to MPR_ARGV_ARGS_ONLY if the command string does not contain a program name. In this case, argv[0] will be set to "".
Returns:
The count of arguments in argv.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
char * mprMakePassword (cchar *password, int saltLength, int rounds)
char * mprMakeSalt (ssize size)
void mprNap (MprTicks msec)
int mprParseArgs (char *command, char **argv, int maxArgs)

Make a argv style array of command arguments.

Description:
The given command is parsed and broken into separate arguments and returned in a null-terminated, argv array. Arguments in the command may be quoted with single or double quotes to group words into one argument. Use back-quote "\\" to escape quotes. This routine modifies supplied command parameter and does not allocate any memory and may be used before mprCreate is invoked.
Parameters:
commandCommand string to parse.
argvArray for the arguments.
maxArgsSize of the argv array.
Returns:
The count of arguments in argv.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
int mprRandom ()
void mprRestart ()

Restart the application.

Description:
This call immediately restarts the application. The standard input, output and error I/O channels are preserved. All other open file descriptors are closed.

If the application is started via a monitoring launch daemon such as launchd or appman, the application should not use this API, but rather defer to the launch daemon to restart the application. In that case, the application should simply do a shutdown via mprShutdown and/or mprDestroy
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
bool mprServicesAreIdle (bool traceRequests)
int mprSetAppName (cchar *name, cchar *title, cchar *version)
void mprSetAppPath (cchar *path)
bool mprSetCmdlineLogging (bool on)

Set if command line logging was requested.

Description:
Logging may be initiated by invoking an MPR based program with a "&ndash;log" switch. This API assists programs to tell the MPR that command line logging has been used.
Parameters:
onSet to true to indicate command line logging is being used.
Returns:
True if command line logging was enabled before this call.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
void mprSetDebugMode (bool on)
void mprSetDomainName (cchar *s)
void mprSetEnv (cchar *key, cchar *value)
void mprSetError (int error)
void mprSetExitStatus (int status)
void mprSetExitTimeout (MprTicks timeout)

Set the exit timeout for a shutdown.

Description:
A shutdown waits for existing requests to complete before exiting. After this timeout has expired, the application will either invoke exit() or cancel the shutdown depending on whether MPR_EXIT_SAFE is defined in the exit strategy via mprShutdown. The default exit timeout is zero.
Parameters:
timeoutTime in milliseconds to wait for current requests to complete and the application to become idle.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprShutdown, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
void mprSetFilesLimit (int limit)
void mprSetHostName (cchar *s)
MprIdleCallback mprSetIdleCallback (MprIdleCallback idleCallback)
void mprSetIpAddr (cchar *ip)
void mprSetKey (cchar *key, void *value)
void mprSetOsError (int error)
void mprSetServerName (cchar *s)
bool mprShouldAbortRequests ()
bool mprShouldDenyNewRequests ()
void mprShutdown (int exitStrategy, int status, MprTicks timeout)

Initiate shutdown of the MPR and application.

Description:
Commence shutdown of the application according to the shutdown policy defined by the "exitStrategy" parameter. An application may call this routine from any thread to request the application exit. Depending on the exitStrategy, this may be an abortive or graceful exit. A desired application exit status code can defined to indicate the cause of the shutdown.

Once called, this routine will set the MPR execution state to MPR_EXIT_STOPPING. Services should detect this by calling mprShouldDenyNewRequests before accepting new connections or requests, but otherwise, services should not take any destructive actions until the MPR state is advanced to MPR_EXIT_STOPPED by mprDestroy. This state can be detected by calling mprShouldAbortRequests. Users can invoke mprCancelShutdown to resume normal operations provided mprDestroy has not proceeded past the point of no return when destructive termination actions are commenced.

Applications that have a user events thread and call mprServiceEvents from their main program, will typically invoke mprShutdown from some other MPR thread to initiate the shutdown. When running requests have completed, or when the shutdown timeout expires (MPR->exitTimeout), the call to mprServiceEvents in the main program will return and the application can then call mprDestroy to complete the shutdown.

Note: This routine starts the shutdown process but does not perform any destructive actions.
Parameters:
exitStrategyShutdown policy. If the MPR_EXIT_ABORT flag is specified, the application will immediately call exit() and will terminate without waiting for current requests to complete. This is not recommended for normal operation as data may be lost.

If MPR_EXIT_SAFE is defined, the shutdown will be cancelled if all requests do not complete before the exit timeout defined via mprSetExitTimeout expires.

Define the MPR_EXIT_RESTART flag for the application to automatically restart after exiting. Do not use this option if the application is using a watchdog/angel process to automatically restart the application (such as appman by appweb).
statusProposed exit status to use when the application exits. See mprGetExitStatus
timeoutExit timeout in milliseconds to wait for current requests to complete. If set to -1, for the default exit timeout.
API Stability:
Stable.
See Also:
mprAddTerminator, mprBreakpoint, mprCreate, mprCreateOsService, mprDecode64, mprDestroy, mprEmptyString, mprEncode64, mprEscapeCmd, mprGetAppDir, mprGetAppName, mprGetAppPath, mprGetAppTitle, mprGetAppVersion, mprGetCmdlineLogging, mprGetDebugMode, mprGetDomainName, mprGetEndian, mprGetError, mprGetHostName, mprGetIpAddr, mprGetLogLevel, mprGetMD5, mprGetMD5WithPrefix, mprGetOsError, mprGetRandomBytes, mprGetServerName, mprIsDestroyed, mprIsDestroying, mprIsIdle, mprIsStopping, mprMakeArgv, mprRandom, mprRestart, mprServicesAreIdle, mprSetAppName, mprSetDebugMode, mprSetDomainName, mprSetHostName, mprSetIdleCallback, mprSetIpAddr, mprSetLogLevel, mprSetServerName, mprShouldAbortRequests, mprShouldDenyNewRequests, mprSleep, mprStart, mprStartEventsThread, mprStartOsService, mprStopOsService, mprUriDecode, mprUriEncode
void mprSleep (MprTicks msec)
int mprStart ()
int mprStartEventsThread ()
int mprStartOsService ()
void mprStopOsService ()
char * mprUriDecode (cchar *uri)
char * mprUriDecodeInSitu (char *uri)
char * mprUriEncode (cchar *uri, int map)

MprBuf

MprBuf

Dynamic Buffer Module.

Description:
MprBuf is a flexible, dynamic growable buffer structure. It has start and end pointers to the data buffer which act as read/write pointers. Routines are provided to get and put data into and out of the buffer and automatically advance the appropriate start/end pointer. By definition, the buffer is empty when the start pointer == the end pointer. Buffers can be created with a fixed size or can grow dynamically as more data is added to the buffer.

For performance, the specification of MprBuf is deliberately exposed. All members of MprBuf are implicitly public. However, it is still recommended that wherever possible, you use the accessor routines provided.
See Also:
MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
API Stability:
Internal.
Fields:
ssizebuflen Current size of buffer.
char *data Actual buffer for data.
char *end Pointer one past the last data chr.
char *endbuf Pointer one past the end of buffer.
ssizegrowBy Next growth increment to use.
ssizemaxsize Max size the buffer can ever grow.
void *refillArg Refill arg - must be alloced memory.
MprBufProcrefillProc Auto-refill procedure.
char *start Pointer to next data char.
void mprAddNullToBuf (MprBuf *buf)

Add a null character to the buffer contents.

Description:
Add a null byte but do not change the buffer content lengths. The null is added outside the "official" content length. This is useful when calling mprGetBufStart and using the returned pointer as a "C" string pointer.
Parameters:
bufBuffer created via mprCreateBuf.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
void mprAdjustBufEnd (MprBuf *buf, ssize count)

Adjust the buffer end position.

Description:
Adjust the buffer end position by the specified amount. This is typically used to advance the end position as content is appended to the buffer. Adjusting the start or end position will change the value returned by mprGetBufLength. If using the mprPutBlock or mprPutChar routines, adjusting the end position is done automatically.
Parameters:
bufBuffer created via mprCreateBuf.
countPositive or negative count of bytes to adjust the end position.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
void mprAdjustBufStart (MprBuf *buf, ssize count)

Adjust the buffer start position.

Description:
Adjust the buffer start position by the specified amount. This is typically used to advance the start position as content is consumed. Adjusting the start or end position will change the value returned by mprGetBufLength. If using the mprGetBlock or mprGetChar routines, adjusting the start position is done automatically.
Parameters:
bufBuffer created via mprCreateBuf.
countPositive or negative count of bytes to adjust the start position.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
char * mprBufToString (MprBuf *buf)
void mprCompactBuf (MprBuf *buf)
MprBuf * mprCreateBuf (ssize initialSize, ssize maxSize)
void mprFlushBuf (MprBuf *buf)
ssize mprGetBlockFromBuf (MprBuf *buf, char *blk, ssize count)

Get a block of data from the buffer.

Description:
Get a block of data from the buffer start and advance the start position. If the requested length is greater than the available buffer content, then return whatever data is available.
Parameters:
bufBuffer created via mprCreateBuf.
blkDestination block for the read data.
countCount of bytes to read from the buffer.
Returns:
The count of bytes read into the block or -1 if the buffer is empty.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
char * mprGetBuf (MprBuf *buf)

Get the origin of the buffer content storage.

Description:
Get a pointer to the start of the buffer content storage. This is always and allocated block.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
A pointer to the buffer content storage.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
char * mprGetBufEnd (MprBuf *buf)

Get a reference to the end of the buffer contents.

Description:
Get a pointer to the location immediately after the end of the buffer contents.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
Pointer to the end of the buffer data contents. Points to the location one after the last data byte.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprGetBufLength (MprBuf *buf)

Get the buffer content length.

Description:
Get the length of the buffer contents. This is not the same as the buffer size which may be larger.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
The length of the content stored in the buffer in bytes.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
MprBufProc mprGetBufRefillProc (MprBuf *buf)
ssize mprGetBufSize (MprBuf *buf)

Get the current size of the buffer content storage.

Description:
This returns the size of the memory block allocated for storing the buffer contents.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
The size of the buffer content storage.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprGetBufSpace (MprBuf *buf)
char * mprGetBufStart (MprBuf *buf)

Get the start of the buffer contents.

Description:
Get a pointer to the start of the buffer contents. Use mprGetBufLength to determine the length of the content. Use mprGetBufEnd to get a pointer to the location after the end of the content.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
Pointer to the start of the buffer data contents.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprGetCharFromBuf (MprBuf *buf)
int mprGrowBuf (MprBuf *buf, ssize count)

Grow the buffer.

Description:
Grow the storage allocated for content for the buffer. The new size must be less than the maximum limit specified via mprCreateBuf or mprSetBufSize
Parameters:
bufBuffer created via mprCreateBuf.
countCount of bytes by which to grow the buffer content size.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprInsertCharToBuf (MprBuf *buf, int c)

Insert a character into the buffer.

Description:
Insert a character into to the buffer prior to the current buffer start point.
Parameters:
bufBuffer created via mprCreateBuf.
cCharacter to append.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprLookAtLastCharInBuf (MprBuf *buf)

Peek at the last character in the buffer.

Description:
Non-destructively return the last character from just prior to the end position in the buffer. The character is returned and the end position is not altered.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprLookAtNextCharInBuf (MprBuf *buf)

Peek at the next character in the buffer.

Description:
Non-destructively return the next character from the start position in the buffer. The character is returned and the start position is not altered.
Parameters:
bufBuffer created via mprCreateBuf.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutBlockToBuf (MprBuf *buf, cchar *ptr, ssize size)

Put a block to the buffer.

Description:
Append a block of data to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
ptrBlock to append.
sizeSize of block to append.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprPutCharToBuf (MprBuf *buf, int c)

Put a character to the buffer.

Description:
Append a character to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
cCharacter to append.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutIntToBuf (MprBuf *buf, int64 i)

Put an integer to the buffer.

Description:
Append a integer to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
iInteger to append to the buffer.
Returns:
Number of characters added to the buffer, otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutPadToBuf (MprBuf *buf, int c, ssize count)

Put padding characters to the buffer.

Description:
Append padding characters to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
cCharacter to append.
countCount of pad characters to put.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutStringToBuf (MprBuf *buf, cchar *str)

Put a string to the buffer.

Description:
Append a null terminated string to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
strString to append.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutSubStringToBuf (MprBuf *buf, cchar *str, ssize count)

Put a substring to the buffer.

Description:
Append a null terminated substring to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
strString to append.
countPut at most count characters to the buffer.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
ssize mprPutToBuf (MprBuf *buf, cchar *fmt, ...)

Put a formatted string to the buffer.

Description:
Format a string and append to the buffer at the end position and increment the end pointer.
Parameters:
bufBuffer created via mprCreateBuf.
fmtPrintf style format string.
...Variable arguments for the format string.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc, mprSetBufSize
int mprRefillBuf (MprBuf *buf)
void mprResetBufIfEmpty (MprBuf *buf)
void mprSetBufMax (MprBuf *buf, ssize maxSize)
void mprSetBufRefillProc (MprBuf *buf, MprBufProc fn, void *arg)

Set the buffer refill procedure.

Description:
Define a buffer refill procedure. The MprBuf module will not invoke or manage this refill procedure. It is simply stored to allow upper layers to use and provide their own auto-refill mechanism.
Parameters:
bufBuffer created via mprCreateBuf.
fnCallback function to store.
argCallback data argument.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufSize
int mprSetBufSize (MprBuf *buf, ssize size, ssize maxSize)

Set the buffer size.

Description:
Set the current buffer content size and maximum size limit. Setting a current size will immediately grow the buffer to be this size. If the size is less than the current buffer size, the requested size will be ignored. ie. this call will not shrink the buffer. Setting a maxSize will define a maximum limit for how big the buffer contents can grow. Set either argument to -1 to be ignored.
Parameters:
bufBuffer created via mprCreateBuf.
sizeSize to immediately make the buffer. If size is less than the current buffer size, it will be ignored. Set to -1 to ignore this parameter.
maxSizeMaximum size the buffer contents can grow to.
Returns:
Zero if successful and otherwise a negative error code.
API Stability:
Stable.
See Also:
MprBuf, MprBufProc, mprAddNullToBuf, mprAdjustBufEnd, mprAdjustBufStart, mprBufToString, mprCloneBuf, mprCompactBuf, mprCreateBuf, mprFlushBuf, mprGetBlockFromBuf, mprGetBufEnd, mprGetBufLength, mprGetBufRefillProc, mprGetBufSize, mprGetBufSpace, mprGetBufStart, mprGetCharFromBuf, mprGrowBuf, mprInsertCharToBuf, mprLookAtLastCharInBuf, mprLookAtNextCharInBuf, mprPutBlockToBuf, mprPutCharToBuf, mprPutIntToBuf, mprPutPadToBuf, mprPutStringToBuf, mprPutSubStringToBuf, mprRefillBuf, mprResetBufIfEmpty, mprSetBufMax, mprSetBufRefillProc

MprCache

MprCache

In-memory caching.

See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
API Stability:
Internal.
Fields:
MprTickslifespan Default lifespan (msec).
ssizemaxKeys Max number of keys.
ssizemaxMem Max memory for session data.
MprMutex *mutex Cache lock.
intresolution Frequence for pruner.
struct MprCache *shared Shared common cache.
MprHash *store Key/value store.
MprEvent *timer Pruning timer.
ssizeusedMem Memory in use for keys and data.
MprCache * mprCreateCache (int options)

Create a new cache object.

Parameters:
optionsSet of option flags. Use MPR_CACHE_SHARED to select a global shared cache object.
Returns:
A cache instance object. On error, return null.
API Stability:
Evolving.
See Also:
mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
void * mprDestroyCache (MprCache *cache)

Destroy a new cache object.

Parameters:
cacheThe cache instance object returned from mprCreateCache
API Stability:
Evolving.
See Also:
mprCreateCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
int mprExpireCacheItem (MprCache *cache, cchar *key, MprTicks expires)

Set the expiry date for a cache item.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key.
expiresTime when the cache item will expire. If expires is zero, the item is immediately removed from the cache.
Returns:
Zero if the expiry is successfully updated. Return MPR_ERR_CANT_FIND if the cache item is not present in the cache.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
void mprGetCacheStats (MprCache *cache, int *numKeys, ssize *mem)

Get the Cache statistics.

Parameters:
cacheThe cache instance object returned from mprCreateCache
numKeysNumber of keys currently stored.
memMemory in use to store keys.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
int64 mprIncCache (MprCache *cache, cchar *key, int64 amount)

Increment a numeric cache item.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key.
amountNumeric amount to increment the cache item. This may be a negative number to decrement the item.
Returns:
The new value for the cache item after incrementing.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
char * mprLookupCache (MprCache *cache, cchar *key, MprTime *modified, int64 *version)

Lookup an item in the cache.

Description:
Same as mprReadCache but will not update the last accessed time.
Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key.
modifiedOptional MprTime value reference to receive the last modified time of the cache item. Set to null if not required.
versionOptional int64 value reference to receive the version number of the cache item. Set to null if not required. Cache items have a version number that is incremented every time the item is updated.
Returns:
The cache item value.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
void mprPruneCache (MprCache *cache)

Prune the cache.

Description:
Prune the cache and discard all cached items.
Parameters:
cacheThe cache instance object returned from mprCreateCache
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
char * mprReadCache (MprCache *cache, cchar *key, MprTime *modified, int64 *version)

Read an item from the cache.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key.
modifiedOptional MprTime value reference to receive the last modified time of the cache item. Set to null if not required.
versionOptional int64 value reference to receive the version number of the cache item. Set to null if not required. Cache items have a version number that is incremented every time the item is updated.
Returns:
The cache item value.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
bool mprRemoveCache (MprCache *cache, cchar *key)

Remove items from the cache.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key. If set to null, then remove all keys from the cache.
Returns:
True if the cache item was removed.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprSetCacheLimits, mprWriteCache
void mprSetCacheLimits (MprCache *cache, int64 keys, MprTicks lifespan, int64 memory, int resolution)

Set the cache resource limits.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keysSet the maximum number of keys the cache can store.
lifespanSet the default lifespan for cache items in milliseconds.
memoryMemory limit in bytes for all cache keys and items.
resolutionSet the cache item pruner resolution. This defines how frequently the cache manager will check items for expiration.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprWriteCache
int mprSetCacheLink (MprCache *cache, cchar *key, void *link)

Set a linked managed memory reference for a cached item.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key to write.
linkManaged memory reference. May be NULL.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
void mprSetCacheNotify (MprCache *cache, MprCacheProc notify)

Set a notification callback to be invoked for events of interest on cached items.

WARNING: the callback may happen on any thread. Use careful locking to synchronize access to data. Take care not to block the thread issuing the callback
Parameters:
cacheThe cache instance object returned from mprCreateCache
notifyMprCacheProc notification callback. Invoked for events of interest on cache items. The event is set to MPR_CACHE_NOTIFY_REMOVE when items are removed from the cache. Invoked as:.
(*MprCacheProc)(MprCache *cache, cchar *key, cchar *data, int event);
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits, mprWriteCache
ssize mprWriteCache (MprCache *cache, cchar *key, cchar *value, MprTime modified, MprTicks lifespan, int64 version, int options)

Write a cache item.

Parameters:
cacheThe cache instance object returned from mprCreateCache
keyCache item key to write.
valueValue to set for the cache item. This must be allocated memory.
modifiedValue to set for the cache last modified time. If set to zero, the current time is obtained via mprGetTime
lifespanLifespan of the item in milliseconds. The item will be removed from the cache by the Cache manager when the lifetime expires unless it is rewritten to extend the lifespan.
versionExpected version number of the item. This is used to do transactional writes to the cache item. First the version number is retrieved via mprReadCache and that version number is supplied to mprWriteCache when the item is updated. If another caller updates the item in between the read/write, the version number will not match when the item is subsequently written and this call will fail with the MPR_ERR_BAD_STATE return code. Set to zero if version checking is not required.
optionsOptions to control how the item value is updated. Use MPR_CACHE_SET to update the cache item and create if it does not exist. Use MPR_CACHE_ADD to add the item only if it does not already exits. Use MPR_CACHE_APPEND to append the parameter value to any existing cache item value. Use MPR_CACHE_PREPEND to prepend the value.
Returns:
If writing the cache item was successful this call returns the number of bytes written. Otherwise a negative MPR error code is returned. MPR_ERR_BAD_STATE will be returned if an invalid version number is supplied. MPR_ERR_ALREADY_EXISTS will be returned if MPR_CACHE_ADD is specified and the cache item already exists.
API Stability:
Evolving.
See Also:
mprCreateCache, mprDestroyCache, mprIncCache, mprReadCache, mprRemoveCache, mprSetCacheLimits

MprCmd

MprCmd

Command execution Service.

Description:
The MprCmd service enables execution of local commands. It uses three full-duplex pipes to communicate read, write and error data with the command.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
API Stability:
Internal.
Fields:
intargc Count of args in argv.
cchar **argv List of args. Null terminated.
MprCmdProccallback Handler for client output and completion.
void *callbackData Managed callback data reference.
boolcomplete All channels EOF and status gathered.
cchar **defaultEnv Environment to use if no env passed to mprStartCmd.
char *dir Current working dir for the process.
MprDispatcher *dispatcher Dispatcher to use for wait events.
MprList *env List of environment variables. Null terminated.
inteofCount Count of end-of-files.
MprCmdFilefiles[MPR_CMD_MAX_PIPE] Stdin, stdout for the command.
intflags Control flags (userFlags not here).
MprForkCallbackforkCallback Forked client callback.
void *forkData Managed fork callback data reference.
cchar **makeArgv Allocated argv.
MprMutex *mutex Multithread sync.
intoriginalPid Persistent copy of the pid.
intpid Process ID of the created process.
cchar *program Program path name.
intrequiredEof Number of EOFs required for an exit.
char *searchPath Search path to use to locate the command.
MprSignal *signal Signal handler for SIGCHLD.
intstatus Command exit status.
MprBuf *stderrBuf Standard error output from the client.
MprBuf *stdoutBuf Standard output from the client.
boolstopped Command stopped.
inttimedout Request has timedout.
void *userData User data storage.
intuserFlags User flags storage.
bool mprAreCmdEventsEnabled (MprCmd *cmd, int channel)

Return true if command events are enabled.

Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
Returns:
True if I/O events are enabled for the given channel.
API Stability:
Internal.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprCloseCmdFd (MprCmd *cmd, int channel)

Close the command channel.

Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
API Stability:
Stable.
See Also:
mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
MprCmd * mprCreateCmd (MprDispatcher *dispatcher)
void mprDestroyCmd (MprCmd *cmd)
void mprDisableCmdEvents (MprCmd *cmd, int channel)

Disable command I/O events.

This disables events on a given channel
Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprDisconnectCmd (MprCmd *cmd)

Disconnect a command its underlying I/O channels.

This is used to prevent further I/O wait events while still preserving the MprCmd object
Parameters:
cmdMprCmd object created via mprCreateCmd.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprEnableCmdEvents (MprCmd *cmd, int channel)

Enable command I/O events.

This enables events on a given channel
Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprEnableCmdOutputEvents (MprCmd *cmd, bool on)

Enable command I/O events for the command's STDOUT and STDERR channels.

Parameters:
cmdMprCmd object created via mprCreateCmd.
onSet to true to enable events. Set to false to disable.
Returns:
True if I/O events are enabled for the given channel.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprFinalizeCmd (MprCmd *cmd)
ssize mprGetActiveCmdCount ()
MprBuf * mprGetCmdBuf (MprCmd *cmd, int channel)

Get the underlying buffer for a channel.

Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
Returns:
A reference to the MprBuf buffer structure.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprGetCmdExitStatus (MprCmd *cmd)

Get the command exit status.

Parameters:
cmdMprCmd object created via mprCreateCmd.
Returns:
Status If the command has exited, a status between 0 and 255 is returned. Otherwise, a negative error code is returned.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprGetCmdFd (MprCmd *cmd, int channel)

Get the underlying file descriptor for an I/O channel.

Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to close. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
Returns:
The file descriptor.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
bool mprIsCmdRunning (MprCmd *cmd)

Test if the command is still running.

Parameters:
cmdMprCmd object created via mprCreateCmd.
Returns:
True if the command is still running.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
ssize mprReadCmd (MprCmd *cmd, int channel, char *buf, ssize bufsize)

Make the I/O channels to send and receive data to and from the command.

Parameters:
cmdMprCmd object created via mprCreateCmd.
channelChannel number to read from. Should be either MPR_CMD_STDIN, MPR_CMD_STDOUT or MPR_CMD_STDERR.
bufBuffer to read into.
bufsizeSize of buffer.
Returns:
Zero if successful. Otherwise a negative MPR error code.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprReapCmd (MprCmd *cmd, MprTicks timeout)

Reap the command.

This waits for and collect the command exit status
Parameters:
cmdMprCmd object created via mprCreateCmd.
timeoutTime in milliseconds to wait for the command to complete and exit.
Returns:
Zero if successful. Otherwise a negative MPR error code.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprRun (MprDispatcher *dispatcher, cchar *command, cchar *input, char **output, char **error, MprTicks timeout)

Run a simple blocking command using a string command line.

Parameters:
dispatcherMprDispatcher event queue to use for waiting. Set to NULL to use the default MPR dispatcher.
commandCommand line to run.
inputCommand input. Data to write to the command which will be received on the comamnds stdin.
outputReference to a string to receive the stdout from the command.
errorReference to a string to receive the stderr from the command.
timeoutTime in milliseconds to wait for the command to complete and exit. Set to -1 to wait forever.
Returns:
Command exit status, or negative MPR error code.
API Stability:
Evolving.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprRunCmd (MprCmd *cmd, cchar *command, cchar **envp, cchar *in, char **out, char **err, MprTicks timeout, int flags)

Run a command using a string command line.

This starts the command via mprStartCmd() and waits for its completion
Parameters:
cmdMprCmd object created via mprCreateCmd.
commandCommand line to run.
envpArray of environment strings. Each environment string should be of the form: "KEY=VALUE". The array must be null terminated.
inCommand input. Data to write to the command which will be received on the comamnds stdin.
outReference to a string to receive the stdout from the command.
errReference to a string to receive the stderr from the command.
timeoutTime in milliseconds to wait for the command to complete and exit.
flagsFlags to modify execution. Valid flags are: MPR_CMD_NEW_SESSION Create a new session on Unix MPR_CMD_SHOW Show the commands window on Windows MPR_CMD_IN Connect to stdin MPR_CMD_OUT Capture stdout MPR_CMD_ERR Capture stderr MPR_CMD_EXACT_ENV Use the exact environment supplied. Don't inherit and blend with existing environment.
Returns:
Command exit status, or negative MPR error code.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
int mprRunCmdV (MprCmd *cmd, int argc, cchar **argv, cchar **envp, cchar *in, char **out, char **err, MprTicks timeout, int flags)

Run a command using an argv[] array of arguments.

This invokes mprStartCmd() and waits for its completion
Parameters:
cmdMprCmd object created via mprCreateCmd.
argcCount of arguments in argv.
argvCommand arguments array.
envpArray of environment strings. Each environment string should be of the form: "KEY=VALUE". The array must be null terminated.
inCommand input. Data to write to the command which will be received on the comamnds stdin.
outReference to a string to receive the stdout from the command.
errReference to a string to receive the stderr from the command.
timeoutTime in milliseconds to wait for the command to complete and exit.
flagsFlags to modify execution. Valid flags are: MPR_CMD_NEW_SESSION Create a new session on Unix MPR_CMD_SHOW Show the commands window on Windows MPR_CMD_IN Connect to stdin MPR_CMD_OUT Capture stdout MPR_CMD_ERR Capture stderr.
Returns:
Zero if successful. Otherwise a negative MPR error code.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprSetCmdCallback (MprCmd *cmd, MprCmdProc callback, void *data)

Define a callback to be invoked to receive response data from the command.

Parameters:
cmdMprCmd object created via mprCreateCmd.
callbackFunction of the signature MprCmdProc which will be invoked for receive notification for data from the commands stdout and stderr channels. MprCmdProc has the signature: int callback(MprCmd *cmd, int channel, void *data) {}.
dataUser defined data to be passed to the callback.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprSetCmdDefaultEnv (MprCmd *cmd, cchar **env)

Set the default environment to use for commands.

Description:
This environment is used if one is not defined via mprStartCmd
Parameters:
cmdMprCmd object created via mprCreateCmd.
envArray of environment "KEY=VALUE" strings. Null terminated.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdEnv, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprSetCmdDir (MprCmd *cmd, cchar *dir)
void mprSetCmdEnv (MprCmd *cmd, cchar **env)

Set the command environment.

Parameters:
cmdMprCmd object created via mprCreateCmd.
envArray of environment strings. Each environment string should be of the form: "KEY=VALUE". The array must be null terminated.
API Stability:
Stable.
See Also:
mprCloseCmdFd, mprCreateCmd, mprDestroyCmd, mprDisableCmdEvents, mprDisconnectCmd, mprEnableCmdEvents, mprFinalizeCmd, mprGetCmdBuf, mprGetCmdExitStatus, mprGetCmdFd, mprIsCmdComplete, mprIsCmdRunning, mprReadCmd, mprReapCmd, mprRunCmd, mprRunCmdV, mprSetCmdCallback, mprSetCmdDir, mprSetCmdSearchPath, mprStartCmd, mprStopCmd, mprWaitForCmd, mprWriteCmd, mprWriteCmdBlock
void mprSetCmdSearchPath (MprCmd *cmd, cchar *search)

Set the default command search path.

Description:
The search path is used to locate the program to run for the command.
Parameters:
cmdMprCmd object created via mprCreateCmd.
searchSearch string. This is in a format similar to the PATH environment variable.
API Stability:
Stable.
See Also:
mprCloseCmdFd,