AndroMeta  2.0.0
AndroMeta/include/AndroMeta/MPeerProc.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2009-2012 AndroMeta LLC. All rights reserved.
00003  *
00004  * AndroMeta LLC retains all intellectual property and proprietary 
00005  * rights to this software and related documentation and any modifications 
00006  * thereto.  Any use, reproduction, disclosure, or distribution of this 
00007  * software and related documentation without an express license agreement 
00008  * from AndroMeta LLC is strictly prohibited.
00009  * 
00010  */
00011 
00018 #ifndef ANDROMETA_M_PEER_PROC_H
00019 #define ANDROMETA_M_PEER_PROC_H
00020 
00021 #include <AndroMeta/MObject.h>
00022 
00023 namespace Meta{
00024   
00025   class MProcTask;
00026   
00035   class MPeerProc{
00036   public:
00037     
00043     MPeerProc(MProcTask* task);
00044     
00048     virtual ~MPeerProc();
00049     
00055     bool connect();
00056     
00062     bool connect(int localPort, long groupId,
00063                  const mstr& user, const mstr& key);
00064     
00068     bool isConnected() const;
00069     
00073     MProcTask* task();
00074     
00078     int localPort() const;
00079     
00083     long groupId() const;
00084     
00093     bool unicast(long peerId,
00094                  const mvar& msg,
00095                  const mvar& header=undef,
00096                  bool block=false);
00097     
00106     bool broadcast(const mvar& msg,
00107                    const mvar& header=undef,
00108                    bool block=false);
00109     
00113     long peerId() const;
00114     
00118     long submitterId() const;
00119     
00123     mvec peers() const;
00124     
00129     void barrier();
00130     
00134     void close();
00135     
00139     virtual void onClose();
00140     
00145     virtual void onClose(long peerId);
00146     
00151     virtual void handleMessage(mvar& msg, mvar& header) = 0;
00152     
00153   private:  
00154     MPeerProc& operator=(const MPeerProc&);
00155     MPeerProc(const MPeerProc&);
00156     
00157     class MPeerProc_* x_;
00158   };
00159   
00160 } // end namespace Meta
00161 
00162 #endif // ANDROMETA_M_PEER_PROC_H