|
AndroMeta
2.0.0
|
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
1.7.6.1