Remove stale HPC Pack 2008 Beta 1 objects
[mirror/winof/.git] / ulp / nd / user / NdCq.h
1 /*\r
2  * Copyright (c) 2008 Microsoft Corporation.  All rights reserved.\r
3  *\r
4  * This software is available to you under the OpenIB.org BSD license\r
5  * below:\r
6  *\r
7  *     Redistribution and use in source and binary forms, with or\r
8  *     without modification, are permitted provided that the following\r
9  *     conditions are met:\r
10  *\r
11  *      - Redistributions of source code must retain the above\r
12  *        copyright notice, this list of conditions and the following\r
13  *        disclaimer.\r
14  *\r
15  *      - Redistributions in binary form must reproduce the above\r
16  *        copyright notice, this list of conditions and the following\r
17  *        disclaimer in the documentation and/or other materials\r
18  *        provided with the distribution.\r
19  *\r
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
23  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
27  * SOFTWARE.\r
28  *\r
29  * $Id:$\r
30  */\r
31 \r
32 #pragma once\r
33 #include "ndspi.h"\r
34 #include <iba/ib_al.h>\r
35 #include "al_cq.h"\r
36 \r
37 \r
38 namespace NetworkDirect\r
39 {\r
40     class CAdapter;\r
41 \r
42     class CCq :\r
43         public INDCompletionQueue\r
44     {\r
45         friend class CEndpoint;\r
46     public:\r
47         CCq(void);\r
48         ~CCq(void);\r
49 \r
50         HRESULT Initialize(\r
51             CAdapter* pParent,\r
52             SIZE_T nEntries );\r
53 \r
54         // *** IUnknown methods ***\r
55         HRESULT STDMETHODCALLTYPE QueryInterface(\r
56             REFIID riid,\r
57             LPVOID FAR* ppvObj\r
58             );\r
59 \r
60         ULONG STDMETHODCALLTYPE AddRef(void);\r
61 \r
62         ULONG STDMETHODCALLTYPE Release(void);\r
63 \r
64         // *** INDOverlapped methods ***\r
65         HRESULT STDMETHODCALLTYPE CancelOverlappedRequests(void);\r
66 \r
67         HRESULT STDMETHODCALLTYPE GetOverlappedResult(\r
68             __inout_opt OVERLAPPED *pOverlapped,\r
69             __out SIZE_T *pNumberOfBytesTransferred,\r
70             __in BOOL bWait\r
71             );\r
72 \r
73         // *** INDCompletionQueue methods ***\r
74         HANDLE STDMETHODCALLTYPE GetAdapterFileHandle(void);\r
75 \r
76         HRESULT STDMETHODCALLTYPE Close(void);\r
77 \r
78         HRESULT STDMETHODCALLTYPE Resize(\r
79             __in SIZE_T nEntries\r
80             );\r
81 \r
82         HRESULT STDMETHODCALLTYPE Notify(\r
83             __in DWORD Type,\r
84             __inout_opt OVERLAPPED* pOverlapped\r
85             );\r
86 \r
87         SIZE_T STDMETHODCALLTYPE GetResults(\r
88             __out_ecount(nResults) ND_RESULT* pResults[],\r
89             __in SIZE_T nResults\r
90             );\r
91 \r
92     private:\r
93         HRESULT CreateCq(\r
94             __in UINT32 nEntries );\r
95 \r
96         HRESULT Complete(\r
97             __in HRESULT Status );\r
98 \r
99         HRESULT ModifyCq(\r
100             __in SIZE_T nEntries );\r
101 \r
102         void CloseCq(void);\r
103 \r
104     private:\r
105         volatile LONG m_nRef;\r
106 \r
107         CAdapter* m_pParent;\r
108 \r
109         UINT64 m_hCq;\r
110         ib_cq_handle_t m_uCq;\r
111     };\r
112 \r
113 } // namespace\r