extent,
length;
+ RectangleInfo
+ region;
+
register ssize_t
y;
register unsigned char
*restrict q;
- size_t
- rows;
-
if (cache_info->metacontent_extent == 0)
return(MagickFalse);
if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse)
nexus_info->region.x;
length=(MagickSizeType) nexus_info->region.width*
cache_info->metacontent_extent;
- rows=nexus_info->region.height;
- extent=length*rows;
+ extent=length*nexus_info->region.height;
+ region=nexus_info->region;
+ y=0;
q=(unsigned char *) nexus_info->metacontent;
switch (cache_info->type)
{
(extent == (MagickSizeType) ((size_t) extent)))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
p=(unsigned char *) cache_info->metacontent+offset*
cache_info->metacontent_extent;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
(void) memcpy(q,p,(size_t) length);
p+=cache_info->metacontent_extent*cache_info->columns;
(extent <= MagickMaxBufferExtent))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
extent=(MagickSizeType) cache_info->columns*cache_info->rows;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
count=ReadPixelCacheRegion(cache_info,cache_info->offset+extent*
cache_info->number_channels*sizeof(Quantum)+offset*
cache_info->metacontent_extent,length,(unsigned char *) q);
- if ((MagickSizeType) count != length)
+ if (count != (MagickOffsetType) length)
break;
offset+=cache_info->columns;
q+=cache_info->metacontent_extent*nexus_info->region.width;
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (y < (ssize_t) rows)
- {
- ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
case DistributedCache:
{
- MagickBooleanType
- status;
-
- RectangleInfo
- region;
-
/*
Read metacontent from distributed cache.
*/
LockSemaphoreInfo(cache_info->file_semaphore);
- region=nexus_info->region;
- region.height=1;
- status=MagickTrue;
- for (y=0; y < (ssize_t) rows; y++)
+ region.height=1UL;
+ for (y=0; y < (ssize_t) region.height; y++)
{
- status=ReadDistributePixelCachePixels(cache_info->server_info,®ion,
+ count=ReadDistributePixelCachePixels(cache_info->server_info,®ion,
length,(unsigned char *) q);
- if (status == MagickFalse)
+ if (count != (MagickOffsetType) length)
break;
q+=cache_info->metacontent_extent*nexus_info->region.width;
region.y++;
}
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (status == MagickFalse)
- {
- ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
default:
break;
}
+ if (y < (ssize_t) region.height)
+ {
+ ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
+ cache_info->cache_filename);
+ return(MagickFalse);
+ }
if ((cache_info->debug != MagickFalse) &&
(CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse))
(void) LogMagickEvent(CacheEvent,GetMagickModule(),
extent,
length;
+ RectangleInfo
+ region;
+
register Quantum
*restrict q;
register ssize_t
y;
- size_t
- rows;
-
if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse)
return(MagickTrue);
offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+
nexus_info->region.x;
length=(MagickSizeType) cache_info->number_channels*nexus_info->region.width*
sizeof(Quantum);
- rows=nexus_info->region.height;
- extent=length*rows;
+ extent=length*nexus_info->region.height;
+ region=nexus_info->region;
+ y=0;
q=nexus_info->pixels;
switch (cache_info->type)
{
(extent == (MagickSizeType) ((size_t) extent)))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
p=cache_info->pixels+offset*cache_info->number_channels;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
(void) memcpy(q,p,(size_t) length);
p+=cache_info->number_channels*cache_info->columns;
(extent <= MagickMaxBufferExtent))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
count=ReadPixelCacheRegion(cache_info,cache_info->offset+offset*
cache_info->number_channels*sizeof(*q),length,(unsigned char *) q);
- if ((MagickSizeType) count != length)
+ if (count != (MagickOffsetType) length)
break;
offset+=cache_info->columns;
q+=cache_info->number_channels*nexus_info->region.width;
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (y < (ssize_t) rows)
- {
- ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
case DistributedCache:
{
- MagickBooleanType
- status;
-
- RectangleInfo
- region;
-
/*
Read pixels from distributed cache.
*/
LockSemaphoreInfo(cache_info->file_semaphore);
- region=nexus_info->region;
- region.height=1;
- status=MagickTrue;
- for (y=0; y < (ssize_t) rows; y++)
+ region.height=1UL;
+ for (y=0; y < (ssize_t) region.height; y++)
{
- status=ReadDistributePixelCachePixels(cache_info->server_info,®ion,
+ count=ReadDistributePixelCachePixels(cache_info->server_info,®ion,
length,(unsigned char *) q);
- if (status == MagickFalse)
+ if (count != (MagickOffsetType) length)
break;
q+=cache_info->number_channels*nexus_info->region.width;
region.y++;
}
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (status == MagickFalse)
- {
- ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
default:
break;
}
+ if (y < (ssize_t) region.height)
+ {
+ ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
+ cache_info->cache_filename);
+ return(MagickFalse);
+ }
if ((cache_info->debug != MagickFalse) &&
(CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse))
(void) LogMagickEvent(CacheEvent,GetMagickModule(),
assert(image != (Image *) NULL);
assert(exception != (ExceptionInfo *) NULL);
+ cache_info=(CacheInfo *) image->cache;
cache_info=(CacheInfo *) GetImagePixelCache(image,MagickTrue,exception);
return(cache_info == (CacheInfo *) NULL ? MagickFalse : MagickTrue);
}
extent,
length;
+ RectangleInfo
+ region;
+
register const unsigned char
*restrict p;
register ssize_t
y;
- size_t
- rows;
-
if (cache_info->metacontent_extent == 0)
return(MagickFalse);
if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse)
nexus_info->region.x;
length=(MagickSizeType) nexus_info->region.width*
cache_info->metacontent_extent;
- rows=nexus_info->region.height;
- extent=(MagickSizeType) length*rows;
+ extent=(MagickSizeType) length*nexus_info->region.height;
+ region=nexus_info->region;
+ y=0;
p=(unsigned char *) nexus_info->metacontent;
switch (cache_info->type)
{
(extent == (MagickSizeType) ((size_t) extent)))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
q=(unsigned char *) cache_info->metacontent+offset*
cache_info->metacontent_extent;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
(void) memcpy(q,p,(size_t) length);
p+=nexus_info->region.width*cache_info->metacontent_extent;
(extent <= MagickMaxBufferExtent))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
extent=(MagickSizeType) cache_info->columns*cache_info->rows;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
count=WritePixelCacheRegion(cache_info,cache_info->offset+extent*
cache_info->number_channels*sizeof(Quantum)+offset*
cache_info->metacontent_extent,length,(const unsigned char *) p);
- if ((MagickSizeType) count != length)
+ if (count != (MagickOffsetType) length)
break;
p+=cache_info->metacontent_extent*nexus_info->region.width;
offset+=cache_info->columns;
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (y < (ssize_t) rows)
- {
- ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
case DistributedCache:
{
- MagickBooleanType
- status;
-
- RectangleInfo
- region;
-
/*
Write metacontent to distributed cache.
*/
LockSemaphoreInfo(cache_info->file_semaphore);
- region=nexus_info->region;
- region.height=1;
- status=MagickTrue;
- for (y=0; y < (ssize_t) rows; y++)
+ region.height=1UL;
+ for (y=0; y < (ssize_t) region.height; y++)
{
- status=WriteDistributePixelCachePixels(cache_info->server_info,®ion,
+ count=WriteDistributePixelCachePixels(cache_info->server_info,®ion,
length,(const unsigned char *) p);
- if (status == MagickFalse)
+ if (count != (MagickOffsetType) length)
break;
p+=cache_info->metacontent_extent*nexus_info->region.width;
region.y++;
}
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (status == MagickFalse)
- {
- ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
default:
break;
}
+ if (y < (ssize_t) region.height)
+ {
+ ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
+ cache_info->cache_filename);
+ return(MagickFalse);
+ }
if ((cache_info->debug != MagickFalse) &&
(CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse))
(void) LogMagickEvent(CacheEvent,GetMagickModule(),
extent,
length;
+ RectangleInfo
+ region;
+
register const Quantum
*restrict p;
register ssize_t
y;
- size_t
- rows;
-
if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse)
return(MagickTrue);
offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+
nexus_info->region.x;
length=(MagickSizeType) cache_info->number_channels*nexus_info->region.width*
sizeof(Quantum);
- rows=nexus_info->region.height;
- extent=length*rows;
+ extent=length*nexus_info->region.height;
+ region=nexus_info->region;
+ y=0;
p=nexus_info->pixels;
switch (cache_info->type)
{
(extent == (MagickSizeType) ((size_t) extent)))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
q=cache_info->pixels+offset*cache_info->number_channels;
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
(void) memcpy(q,p,(size_t) length);
p+=cache_info->number_channels*nexus_info->region.width;
(extent <= MagickMaxBufferExtent))
{
length=extent;
- rows=1UL;
+ region.height=1UL;
}
- for (y=0; y < (ssize_t) rows; y++)
+ for (y=0; y < (ssize_t) region.height; y++)
{
count=WritePixelCacheRegion(cache_info,cache_info->offset+offset*
cache_info->number_channels*sizeof(*p),length,(const unsigned char *)
p);
- if ((MagickSizeType) count != length)
+ if (count != (MagickOffsetType) length)
break;
p+=cache_info->number_channels*nexus_info->region.width;
offset+=cache_info->columns;
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (y < (ssize_t) rows)
- {
- ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
case DistributedCache:
{
- MagickBooleanType
- status;
-
- RectangleInfo
- region;
-
/*
Write pixels to distributed cache.
*/
LockSemaphoreInfo(cache_info->file_semaphore);
- region=nexus_info->region;
- region.height=1;
- status=MagickTrue;
- for (y=0; y < (ssize_t) rows; y++)
+ region.height=1UL;
+ for (y=0; y < (ssize_t) region.height; y++)
{
- status=WriteDistributePixelCachePixels(cache_info->server_info,®ion,
+ count=WriteDistributePixelCachePixels(cache_info->server_info,®ion,
length,(const unsigned char *) p);
- if (status == MagickFalse)
+ if (count != (MagickOffsetType) length)
break;
p+=cache_info->number_channels*nexus_info->region.width;
region.y++;
}
UnlockSemaphoreInfo(cache_info->file_semaphore);
- if (status == MagickFalse)
- {
- ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
- cache_info->cache_filename);
- return(MagickFalse);
- }
break;
}
default:
break;
}
+ if (y < (ssize_t) region.height)
+ {
+ ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
+ cache_info->cache_filename);
+ return(MagickFalse);
+ }
if ((cache_info->debug != MagickFalse) &&
(CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse))
(void) LogMagickEvent(CacheEvent,GetMagickModule(),
%
% The format of the ReadDistributePixelCacheMetacontents method is:
%
-% MagickBooleanType *ReadDistributePixelCacheMetacontents(
+% MagickOffsetType ReadDistributePixelCacheMetacontents(
% DistributeCacheInfo *server_info,const RectangleInfo *region,
% const MagickSizeType length,unsigned char *metacontent)
%
% o metacontent: read these metacontent from the pixel cache.
%
*/
-MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent(
+MagickPrivate MagickOffsetType ReadDistributePixelCacheMetacontent(
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,unsigned char *metacontent)
{
MagickBooleanType
status;
+ MagickOffsetType
+ count;
+
register unsigned char
*p;
- ssize_t
- count;
-
unsigned char
buffer[MaxTextExtent];
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
assert(metacontent != (unsigned char *) NULL);
- assert(length == ((size_t) length));
+ if (length != (size_t) length)
+ return(-1);
p=buffer;
*p++='R'; /* read */
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(region->y);
(void) memcpy(p,&length,sizeof(length));
p+=sizeof(length);
- count=send(server_info->file,buffer,p-buffer,0);
- if (count != (ssize_t) (p-buffer))
- return(MagickFalse);
- count=recv(server_info->file,(unsigned char *) metacontent,(size_t) length,0);
- if (count != (ssize_t) length)
- return(MagickFalse);
- count=recv(server_info->file,&status,sizeof(status),0);
- if (count != (ssize_t) sizeof(status))
- return(MagickFalse);
- return(status != 0 ? MagickTrue : MagickFalse);
+ count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0);
+ if (count != (MagickOffsetType) (p-buffer))
+ return(-1);
+ count=(MagickOffsetType) recv(server_info->file,(unsigned char *) metacontent,
+ (size_t) length,0);
+ if (count != (MagickOffsetType) length)
+ return(count);
+ count=(MagickOffsetType) recv(server_info->file,&status,sizeof(status),0);
+ if (count != (MagickOffsetType) sizeof(status))
+ return(-1);
+ return((MagickOffsetType) length);
}
\f
/*
%
% The format of the ReadDistributePixelCachePixels method is:
%
-% MagickBooleanType *ReadDistributePixelCachePixels(
+% MagickOffsetType ReadDistributePixelCachePixels(
% DistributeCacheInfo *server_info,const RectangleInfo *region,
% const MagickSizeType length,unsigned char *pixels)
%
% o pixels: read these pixels from the pixel cache.
%
*/
-MagickPrivate MagickBooleanType ReadDistributePixelCachePixels(
+MagickPrivate MagickOffsetType ReadDistributePixelCachePixels(
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,unsigned char *pixels)
{
MagickBooleanType
status;
+ MagickOffsetType
+ count;
+
register unsigned char
*p;
- ssize_t
- count;
-
unsigned char
buffer[MaxTextExtent];
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
assert(pixels != (unsigned char *) NULL);
- assert(length == ((size_t) length));
+ if (length != (size_t) length)
+ return(-1);
p=buffer;
*p++='r'; /* read */
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(region->y);
(void) memcpy(p,&length,sizeof(length));
p+=sizeof(length);
- count=send(server_info->file,buffer,p-buffer,0);
- if (count != (ssize_t) (p-buffer))
- return(MagickFalse);
- count=recv(server_info->file,(unsigned char *) pixels,(size_t) length,0);
- if (count != (ssize_t) length)
- return(MagickFalse);
+ count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0);
+ if (count != (MagickOffsetType) (p-buffer))
+ return(-1);
+ count=(MagickOffsetType) recv(server_info->file,(unsigned char *) pixels,
+ (size_t) length,0);
+ if (count != (MagickOffsetType) length)
+ return(count);
count=recv(server_info->file,&status,sizeof(status),0);
- if (count != (ssize_t) sizeof(status))
- return(MagickFalse);
- return(status != 0 ? MagickTrue : MagickFalse);
+ if (count != (MagickOffsetType) sizeof(status))
+ return(-1);
+ return((MagickOffsetType) length);
}
\f
/*
% WriteDistributePixelCacheMetacontents() writes image metacontent to the
% specified region of the distributed pixel cache.
%
-%
% The format of the WriteDistributePixelCacheMetacontents method is:
%
-% MagickBooleanType *WriteDistributePixelCacheMetacontents(
+% MagickOffsetType WriteDistributePixelCacheMetacontents(
% DistributeCacheInfo *server_info,const RectangleInfo *region,
% const MagickSizeType length,const unsigned char *metacontent)
%
% o metacontent: write these metacontent to the pixel cache.
%
*/
-MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent(
+MagickPrivate MagickOffsetType WriteDistributePixelCacheMetacontent(
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,const unsigned char *metacontent)
{
MagickBooleanType
status;
+ MagickOffsetType
+ count;
+
register unsigned char
*p;
- ssize_t
- count;
-
unsigned char
buffer[MaxTextExtent];
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
assert(metacontent != (unsigned char *) NULL);
- assert(length == ((size_t) length));
+ if (length != (size_t) length)
+ return(-1);
p=buffer;
*p++='W'; /* write */
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(region->y);
(void) memcpy(p,&length,sizeof(length));
p+=sizeof(length);
- count=send(server_info->file,buffer,p-buffer,0);
- if (count != (ssize_t) (p-buffer))
- return(MagickFalse);
- count=send(server_info->file,(unsigned char *) metacontent,(size_t)
- length,0);
+ count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0);
+ if (count != (MagickOffsetType) (p-buffer))
+ return(-1);
+ count=(MagickOffsetType) send(server_info->file,(unsigned char *) metacontent,
+ (size_t) length,0);
if (count != (ssize_t) length)
- return(MagickFalse);
+ return(count);
count=recv(server_info->file,&status,sizeof(status),0);
if (count != (ssize_t) sizeof(status))
- return(MagickFalse);
- return(status != 0 ? MagickTrue : MagickFalse);
+ return(-1);
+ return((MagickOffsetType) length);
}
\f
/*
% WriteDistributePixelCachePixels() writes image pixels to the specified
% region of the distributed pixel cache.
%
-%
% The format of the WriteDistributePixelCachePixels method is:
%
-% MagickBooleanType *WriteDistributePixelCachePixels(
+% MagickBooleanType WriteDistributePixelCachePixels(
% DistributeCacheInfo *server_info,const RectangleInfo *region,
% const MagickSizeType length,const unsigned char *pixels)
%
% o pixels: write these pixels to the pixel cache.
%
*/
-MagickPrivate MagickBooleanType WriteDistributePixelCachePixels(
+MagickPrivate MagickOffsetType WriteDistributePixelCachePixels(
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,const unsigned char *pixels)
{
MagickBooleanType
status;
+ MagickOffsetType
+ count;
+
register unsigned char
*p;
- ssize_t
- count;
-
unsigned char
buffer[MaxTextExtent];
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
assert(pixels != (const unsigned char *) NULL);
- assert(length == ((size_t) length));
+ if (length != (size_t) length)
+ return(-1);
p=buffer;
*p++='w'; /* write */
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(region->y);
(void) memcpy(p,&length,sizeof(length));
p+=sizeof(length);
- count=send(server_info->file,buffer,p-buffer,0);
- if (count != (ssize_t) (p-buffer))
- return(MagickFalse);
- count=send(server_info->file,(unsigned char *) pixels,(size_t) length,0);
- if (count != (ssize_t) length)
- return(MagickFalse);
+ count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0);
+ if (count != (MagickOffsetType) (p-buffer))
+ return(-1);
+ count=(MagickOffsetType) send(server_info->file,(unsigned char *) pixels,
+ (size_t) length,0);
+ if (count != (MagickOffsetType) length)
+ return(count);
count=recv(server_info->file,&status,sizeof(status),0);
if (count != (ssize_t) sizeof(status))
- return(MagickFalse);
- return(status != 0 ? MagickTrue : MagickFalse);
+ return(-1);
+ return((MagickOffsetType) length);
}