git-svn-id: svn://db.shs.com.ru/pip@246 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-08-31 11:22:25 +00:00
parent 4a419c98a9
commit ab7b9e8941
4 changed files with 26 additions and 6 deletions

View File

@@ -213,28 +213,39 @@ llong PISharedMemory::size() const {
int PISharedMemory::read(void * read_to, int max_size) {
return read(read_to, max_size, 0);
}
int PISharedMemory::read(void * read_to, int max_size, int offset) {
#ifdef WINDOWS
if (!PRIVATE->data) return -1;
CopyMemory(read_to, PRIVATE->data, max_size);
CopyMemory(read_to, &(((char*)(PRIVATE->data))[offset]), max_size);
return max_size;
#endif
#ifdef LINUX
if (!PRIVATE->data) return -1;
memcpy(read_to, PRIVATE->data, max_size);
memcpy(read_to, &(((char*)(PRIVATE->data))[offset]), max_size);
return max_size;
#endif
}
int PISharedMemory::write(const void * data, int max_size) {
return write(data, max_size, 0);
}
int PISharedMemory::write(const void * data, int max_size, int offset) {
#ifdef WINDOWS
if (!PRIVATE->data) return -1;
CopyMemory(PRIVATE->data, data, max_size);
CopyMemory(&(((char*)(PRIVATE->data))[offset]), data, max_size);
return max_size;
#endif
#ifdef LINUX
if (!PRIVATE->data) return -1;
memcpy(PRIVATE->data, data, max_size);
memcpy(&(((char*)(PRIVATE->data))[offset]), data, max_size);
return max_size;
#endif
}

View File

@@ -51,12 +51,21 @@ public:
//! Read from shared memory object to "read_to" no more than "max_size" and return readed bytes count
int read(void * read_to, int max_size);
//! Read from shared memory object to "read_to" no more than "max_size" and return readed bytes count
int read(void * read_to, int max_size, int offset);
//! Write to shared memory object "data" with size "max_size" and return written bytes count
int write(const void * data, int max_size);
//! Write to shared memory object "data" with size "max_size" and return written bytes count
int write(const void * data, int max_size, int offset);
//! Write "data" to shared memory object
int write(const PIByteArray & data) {return write(data.data(), data.size_s());}
//! Write "data" to shared memory object
int write(const PIByteArray & data, int offset) {return write(data.data(), data.size_s(), offset);}
protected:

View File

@@ -145,7 +145,7 @@ void PIProcess::startProc(bool detached) {
0, // Process handle not inheritable
0, // Thread handle not inheritable
false, // Set handle inheritance to FALSE
detached ? DETACHED_PROCESS : 0, // Creation flags
detached ? DETACHED_PROCESS/*CREATE_NEW_CONSOLE*/ : 0, // Creation flags
0,//e, // Use environment
wd.isEmpty() ? 0 : wd.data(), // Use working directory
&si, // Pointer to STARTUPINFO structure

View File

@@ -24,7 +24,7 @@
class PISharedMemory;
class PIP_EXPORT PISingleApplication: protected PIThread {
class PIP_EXPORT PISingleApplication: public PIThread {
PIOBJECT_SUBCLASS(PISingleApplication, PIThread)
public:
PISingleApplication(const PIString & app_name = PIString());