AndroMeta  2.0.0
AndroMeta/include/AndroMeta/MPeerBroker.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 
00019 #ifndef ANDROMETA_M_PEER_BROKER_H
00020 #define ANDROMETA_M_PEER_BROKER_H
00021 
00022 #include <AndroMeta/MBrokerBase.h>
00023 #include <AndroMeta/MObject.h>
00024 
00025 namespace Meta{
00026   
00027   class MProcTask;
00028   
00040   class MPeerBroker : public MBrokerBase{
00041   public:
00042     
00051     MPeerBroker(MProcTask* task);
00052     
00056     virtual ~MPeerBroker();
00057     
00061     mnode process(MObject* object, mnode n, bool block);
00062     
00069     bool connect();
00070     
00076     bool connect(int localPort, long groupId,
00077                  const mstr& user, const mstr& key);
00078     
00082     bool isConnected() const;
00083     
00087     MProcTask* task();
00088     
00092     int localPort() const;
00093     
00097     long groupId() const;
00098     
00102     long peerId() const;
00103     
00107     long submitterId() const;
00108     
00112     mvec peers() const;
00113     
00117     void close();
00118     
00122     virtual void onClose();
00123     
00135     mstr distribute(MObject* object,
00136                     const mstr& className,
00137                     const mstr& objectName="");
00138     
00142     bool revoke(MObject* object);
00143     
00155     MObject* obtain(long peerId,
00156                     const mstr& objectName);
00157     
00166     virtual bool onObtain(MObject* object);
00167     
00175     bool release(MObject* object, bool disconnect=false);
00176     
00181     mvar& session(MObject* object);
00182     
00183   private:
00184     MPeerBroker& operator=(const MPeerBroker&);
00185     MPeerBroker(const MPeerBroker&);
00186     
00187     class MPeerBroker_* x_;
00188   };
00189   
00190 } // end namespace Meta
00191 
00192 #endif // ANDROMETA_M_PEER_BROKER_H