Merge branch 'upstream/OpenFOAM' into master
[freefoam.git] / src / Pstream / gamma / gammaOPstreamImpl.H
blobdf42491ed20d4679d7f77ef4639cf3b9b6ffeee9
1 /*----------------------------------------------------------------------------*\
2                  ______             ______ ____          __  __
3                 |  ____|           |  ____/ __ \   /\   |  \/  |
4                 | |__ _ __ ___  ___| |__ | |  | | /  \  | \  / |
5                 |  __| '__/ _ \/ _ \  __|| |  | |/ /\ \ | |\/| |
6                 | |  | | |  __/  __/ |   | |__| / ____ \| |  | |
7                 |_|  |_|  \___|\___|_|    \____/_/    \_\_|  |_|
9                     FreeFOAM: The Cross-Platform CFD Toolkit
11   Copyright (C) 2008-2009 Michael Wild <themiwi@users.sf.net>
12                           Gerber van der Graaf <gerber_graaf@users.sf.net>
13 --------------------------------------------------------------------------------
14 License
15     This file is part of FreeFOAM.
17     FreeFOAM is free software; you can redistribute it and/or modify it
18     under the terms of the GNU General Public License as published by the
19     Free Software Foundation; either version 2 of the License, or (at your
20     option) any later version.
22     FreeFOAM is distributed in the hope that it will be useful, but WITHOUT
23     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
24     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
25     for more details.
27     You should have received a copy of the GNU General Public License
28     along with FreeFOAM; if not, write to the Free Software Foundation,
29     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31 Class
32     Foam::gammaOPstreamImpl
34 Description
35     GAMMA implementation of the OPstreamImpl abstract base class.
37 SourceFiles
38     gammaOPstreamImpl.C
40 \*----------------------------------------------------------------------------*/
42 #ifndef gammaOPstreamImpl_H
43 #define gammaOPstreamImpl_H
45 #include <OpenFOAM/OPstreamImpl.H>
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 namespace Foam
52 /*---------------------------------------------------------------------------*\
53                            Class gammaOPstreamImpl Declaration
54 \*---------------------------------------------------------------------------*/
56 class gammaOPstreamImpl
58     public OPstreamImpl
60     // Private Member Functions
62         //- Disallow default bitwise copy construct
63         gammaOPstreamImpl(const gammaOPstreamImpl&);
65         //- Disallow default bitwise assignment
66         void operator=(const gammaOPstreamImpl&);
68 public:
70     // Declare name of the class and its debug switch
71     TypeName("gammaOPstreamImpl");
73     // Constructors
75         //- Construct null
76         gammaOPstreamImpl(){}
78     // Member Functions
80         //- Flush the buffer (used in OPstream::~OPstream())
81         virtual void flush
82         (
83             const PstreamImpl::commsTypes commsType,
84             const int toProcNo,
85             const char* buf,
86             const int bufPosition
87         );
89         //- Write given buffer to given processor
90         virtual bool write
91         (
92             const PstreamImpl::commsTypes commsType,
93             const int toProcNo,
94             const char* buf,
95             const std::streamsize bufSize
96         );
98         //- Non-blocking writes: wait until all have finished.
99         virtual void waitRequests();
101         //- Non-blocking writes: has request i finished?
102         virtual bool finishedRequest(const label i);
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 } // End namespace Foam
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 #endif
115 // ************************ vim: set sw=4 sts=4 et: ************************ //