| /* Copyright (c) 2003 Juan Lang |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| #ifndef __NBCMDQUEUE_H__ |
| #define __NBCMDQUEUE_H__ |
| |
| #include <stdarg.h> |
| #include "windef.h" |
| #include "winbase.h" |
| #include "nb30.h" |
| |
| /* This file defines a queue of pending NetBIOS commands. The queue operations |
| * are thread safe, with the exception of NBCmdQueueDestroy: ensure no other |
| * threads are manipulating the queue when calling NBCmdQueueDestroy. |
| */ |
| |
| struct NBCmdQueue; |
| |
| /* Allocates a new command queue from heap. */ |
| struct NBCmdQueue *NBCmdQueueCreate(HANDLE heap) DECLSPEC_HIDDEN; |
| |
| /* Adds ncb to queue. Assumes queue is not NULL, and ncb is not already in the |
| * queue. If ncb is already in the queue, returns NRC_TOOMANY. |
| */ |
| UCHAR NBCmdQueueAdd(struct NBCmdQueue *queue, PNCB ncb) DECLSPEC_HIDDEN; |
| |
| /* Cancels the given ncb. Blocks until the command completes. Implicitly |
| * removes ncb from the queue. Assumes queue and ncb are not NULL, and that |
| * ncb has been added to queue previously. |
| * Returns NRC_CMDCAN on a successful cancellation, NRC_CMDOCCR if the command |
| * completed before it could be cancelled, and various other return values for |
| * different failures. |
| */ |
| UCHAR NBCmdQueueCancel(struct NBCmdQueue *queue, PNCB ncb) DECLSPEC_HIDDEN; |
| |
| /* Sets the return code of the given ncb, and implicitly removes the command |
| * from the queue. Assumes queue and ncb are not NULL, and that ncb has been |
| * added to queue previously. |
| * Returns NRC_GOODRET on success. |
| */ |
| UCHAR NBCmdQueueComplete(struct NBCmdQueue *queue, PNCB ncb, UCHAR retcode) DECLSPEC_HIDDEN; |
| |
| /* Cancels all pending commands in the queue (useful for a RESET or a shutdown). |
| * Returns when all commands have been completed. |
| */ |
| UCHAR NBCmdQueueCancelAll(struct NBCmdQueue *queue) DECLSPEC_HIDDEN; |
| |
| /* Frees all memory associated with the queue. Blocks until all commands |
| * pending in the queue have been completed. |
| */ |
| void NBCmdQueueDestroy(struct NBCmdQueue *queue) DECLSPEC_HIDDEN; |
| |
| #endif /* __NBCMDQUEUE_H__ */ |