Synchronize mql-zmq changes on Lang/Native; add MqlTick and MqlRates support for ZmqMsg
This commit is contained in:
@@ -143,16 +143,10 @@ string StringFromUtf8Pointer(intptr_t psz,int len)
|
||||
if(len < 0) return NULL;
|
||||
string res;
|
||||
int required=MultiByteToWideChar(CP_UTF8,0,psz,len,res,0);
|
||||
StringInit(res,required);
|
||||
int resLength = MultiByteToWideChar(CP_UTF8,0,psz,len,res,required);
|
||||
if(resLength != required)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return res;
|
||||
}
|
||||
// need to include the NULL terminating character
|
||||
StringInit(res,required+1);
|
||||
int rlen=MultiByteToWideChar(CP_UTF8,0,psz,len,res,required);
|
||||
return rlen != required ? NULL : res;
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| for null-terminated string |
|
||||
|
||||
+26
-15
@@ -46,10 +46,10 @@ int zmq_msg_close(zmq_msg_t &msg);
|
||||
int zmq_msg_move(zmq_msg_t &dest,zmq_msg_t &src);
|
||||
int zmq_msg_copy(zmq_msg_t &dest,zmq_msg_t &src);
|
||||
// char *
|
||||
intptr_t zmq_msg_data(zmq_msg_t const &msg);
|
||||
int zmq_msg_size(zmq_msg_t const &msg);
|
||||
int zmq_msg_more(zmq_msg_t const &msg);
|
||||
int zmq_msg_get(zmq_msg_t const &msg,int property);
|
||||
intptr_t zmq_msg_data(zmq_msg_t &msg);
|
||||
int zmq_msg_size(zmq_msg_t &msg);
|
||||
int zmq_msg_more(zmq_msg_t &msg);
|
||||
int zmq_msg_get(zmq_msg_t &msg,int property);
|
||||
int zmq_msg_set(zmq_msg_t &msg,int property,int optval);
|
||||
// const char *
|
||||
intptr_t zmq_msg_gets(zmq_msg_t &msg,const char &property[]);
|
||||
@@ -62,7 +62,7 @@ struct ZmqMsg: public zmq_msg_t
|
||||
protected:
|
||||
int get(int property) {return zmq_msg_get(this,property);}
|
||||
bool set(int property,int value) {return 0==zmq_msg_set(this,property,value);}
|
||||
intptr_t data() const {return zmq_msg_data(this);}
|
||||
intptr_t data() {return zmq_msg_data(this);}
|
||||
bool setStringData(string data,bool nullterminated=false);
|
||||
public:
|
||||
ZmqMsg() {zmq_msg_init(this);}
|
||||
@@ -88,17 +88,9 @@ public:
|
||||
|
||||
size_t size() {return zmq_msg_size(this);}
|
||||
|
||||
void getData(uchar &data[]);
|
||||
string getData();
|
||||
|
||||
template<typename T>
|
||||
void getData(T &array[]) const {ArrayFromPointer(array,data());}
|
||||
template<typename T>
|
||||
void setData(const T &array[]) {ArrayToPointer(array,data());}
|
||||
|
||||
template<typename T>
|
||||
void getData(T &value) const {ValueFromPointer(value,data());}
|
||||
template<typename T>
|
||||
void setData(const T &value) {ValueToPointer(value,data());}
|
||||
void setData(const uchar &data[]);
|
||||
|
||||
bool more() {return 1==zmq_msg_more(this);}
|
||||
|
||||
@@ -119,6 +111,16 @@ bool ZmqMsg::setStringData(string data,bool nullterminated)
|
||||
return res;
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Get message data as bytes array |
|
||||
//+------------------------------------------------------------------+
|
||||
void ZmqMsg::getData(uchar &data[])
|
||||
{
|
||||
size_t size=size();
|
||||
intptr_t src=data();
|
||||
if(ArraySize(data)<size) ArrayResize(data,(int)size);
|
||||
ArrayFromPointer(data,src);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Get message data as utf-8 string |
|
||||
//+------------------------------------------------------------------+
|
||||
string ZmqMsg::getData()
|
||||
@@ -128,6 +130,15 @@ string ZmqMsg::getData()
|
||||
return StringFromUtf8Pointer(psz,(int)size);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| copy data to message internal storage |
|
||||
//+------------------------------------------------------------------+
|
||||
void ZmqMsg::setData(const uchar &data[])
|
||||
{
|
||||
intptr_t dest=data();
|
||||
size_t size=size();
|
||||
ArrayToPointer(data,dest,(int)size);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Wraps zmq_msg_gets: get metadata associated with the msg |
|
||||
//+------------------------------------------------------------------+
|
||||
string ZmqMsg::meta(const string property)
|
||||
|
||||
Reference in New Issue
Block a user