new MESSAGE package for client/server/coupling
This commit is contained in:
87
lib/message/cslib/src/cslib.h
Normal file
87
lib/message/cslib/src/cslib.h
Normal file
@ -0,0 +1,87 @@
|
||||
/* ----------------------------------------------------------------------
|
||||
CSlib - Client/server library for code coupling
|
||||
http://cslib.sandia.gov, Sandia National Laboratories
|
||||
Steve Plimpton, sjplimp@sandia.gov
|
||||
|
||||
Copyright 2018 National Technology & Engineering Solutions of
|
||||
Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||||
NTESS, the U.S. Government retains certain rights in this software.
|
||||
This software is distributed under the GNU Lesser General Public
|
||||
License (LGPL).
|
||||
|
||||
See the README file in the top-level CSlib directory.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
#ifndef CSLIB_H
|
||||
#define CSLIB_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace CSLIB_NS {
|
||||
|
||||
class CSlib {
|
||||
public:
|
||||
int nsend,nrecv;
|
||||
|
||||
CSlib(int, const char *, const void *, const void *);
|
||||
~CSlib();
|
||||
|
||||
void send(int, int);
|
||||
|
||||
void pack_int(int, int);
|
||||
void pack_int64(int, int64_t);
|
||||
void pack_float(int, float);
|
||||
void pack_double(int, double);
|
||||
void pack_string(int, char *);
|
||||
void pack(int, int, int, void *);
|
||||
void pack_parallel(int, int, int, int *, int, void *);
|
||||
|
||||
int recv(int &, int *&, int *&, int *&);
|
||||
|
||||
int unpack_int(int);
|
||||
int64_t unpack_int64(int);
|
||||
float unpack_float(int);
|
||||
double unpack_double(int);
|
||||
char *unpack_string(int);
|
||||
void *unpack(int);
|
||||
void unpack(int, void *);
|
||||
void unpack_parallel(int, int, int *, int, void *);
|
||||
|
||||
int extract(int);
|
||||
|
||||
private:
|
||||
uint64_t myworld; // really MPI_Comm, but avoids use of mpi.h in this file
|
||||
// so apps can include this file w/ no MPI on system
|
||||
int me,nprocs;
|
||||
int client,server;
|
||||
int nfield,maxfield;
|
||||
int msgID,fieldcount;
|
||||
int nheader,maxheader;
|
||||
int nbuf,maxbuf;
|
||||
int maxglobal,maxfieldbytes;
|
||||
int *fieldID,*fieldtype,*fieldlen,*fieldoffset;
|
||||
int *header;
|
||||
int *recvcounts,*displs; // nprocs size for Allgathers
|
||||
int *allids; // nglobal size for pack_parallel()
|
||||
char *buf; // maxbuf size for msg with all fields
|
||||
char *fielddata; // maxfieldbytes size for one global field
|
||||
const char *pad;
|
||||
|
||||
class Msg *msg;
|
||||
|
||||
void send_message();
|
||||
void onefield(int, int, int &, int &);
|
||||
int find_field(int, int);
|
||||
void allocate_fields();
|
||||
void deallocate_fields();
|
||||
int64_t roundup(int64_t, int);
|
||||
void *smalloc(int);
|
||||
void *srealloc(void *, int);
|
||||
void sfree(void *);
|
||||
void error_all(const char *);
|
||||
void error_one(const char *);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user