bbsdirect.h

Go to the documentation of this file.
00001 #ifndef bbsdirect_h
00002 #define bbsdirect_h
00003 
00004 #include <nrnmpiuse.h>
00005 
00006 #include "bbsimpl.h"
00007 class KeepArgs;
00008 #if NRNMPI
00009 struct bbsmpibuf;
00010 #endif
00011 
00012 // uses the pvm packing and unpacking functions but calls the
00013 // server directly instead of through pvmd send, recv.
00014 // i.e. this bbs can only be on the master
00015 
00016 class BBSDirect : public BBSImpl {
00017 public:
00018    BBSDirect();
00019    virtual ~BBSDirect();
00020 
00021    virtual boolean look(const char*);
00022 
00023    virtual void take(const char*); /* blocks til something to take */
00024    virtual boolean look_take(const char*); /* returns false if nothing to take */
00025    // after taking use these
00026    virtual int upkint();
00027    virtual double upkdouble();
00028    virtual void upkvec(int, double*);
00029    virtual char* upkstr(); // delete [] char* when finished
00030    virtual char* upkpickle(size_t*); // delete [] char* when finished
00031 
00032    // before posting use these
00033    virtual void pkbegin();
00034    virtual void pkint(int);
00035    virtual void pkdouble(double);
00036    virtual void pkvec(int, double*);
00037    virtual void pkstr(const char*);
00038    virtual void pkpickle(const char*, size_t);
00039    virtual void post(const char*);
00040 
00041    virtual void post_todo(int parentid);
00042    virtual void post_result(int id);
00043    virtual int look_take_result(int pid); // returns id, or 0 if nothing
00044    virtual int look_take_todo(); // returns id, or 0 if nothing
00045    virtual int take_todo(); // returns id
00046    virtual void save_args(int);
00047    virtual void return_args(int);
00048 
00049    virtual void context();
00050    
00051    virtual void start();
00052    virtual void done();
00053 
00054    virtual void perror(const char*);
00055    static void check_pvm();
00056 private:
00057    KeepArgs* keepargs_;
00058 #if NRNMPI
00059    bbsmpibuf* sendbuf_, *recvbuf_;
00060 #endif
00061 };
00062 
00063 #endif
Generated on Mon Jun 13 08:10:27 2011 for NEURON by  doxygen 1.6.3