static MagickSizeType
crc_xor[256];
+ /*
+ Generate a 64-bit cyclic redundancy check for the message.
+ */
if (crc_initial == MagickFalse)
{
MagickSizeType
MagickSizeType
session_key;
+ /*
+ Connect to the distributed pixel cache server.
+ */
server_info=(DistributeCacheInfo *) AcquireMagickMemory(sizeof(*server_info));
if (server_info == (DistributeCacheInfo *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(server_info,0,sizeof(*server_info));
server_info->signature=MagickSignature;
- /*
- Contact pixel cache server.
- */
server_info->port=0;
hostname=GetHostname(&server_info->port,exception);
session_key=0;
static MagickBooleanType DestroyDistributeCache(SplayTreeInfo *registry,
int file,const MagickSizeType session_key)
{
+ /*
+ Destroy distributed pixel cache.
+ */
return(DeleteNodeFromSplayTree(registry,(const void *) session_key));
}
register MagickOffsetType
i;
+ /*
+ Ensure a complete message is sent.
+ */
count=0;
for (i=0; i < (MagickOffsetType) length; i+=count)
{
unsigned char
message[MaxTextExtent];
+ /*
+ Open distributed pixel cache.
+ */
image=AcquireImage((ImageInfo *) NULL,exception);
if (image == (Image *) NULL)
return(MagickFalse);
unsigned char
message[MaxTextExtent];
+ /*
+ Read distributed pixel cache metacontent.
+ */
image=(Image *) GetValueFromSplayTree(registry,(const void *) session_key);
if (image == (Image *) NULL)
return(MagickFalse);
unsigned char
message[MaxTextExtent];
+ /*
+ Read distributed pixel cache pixels.
+ */
image=(Image *) GetValueFromSplayTree(registry,(const void *) session_key);
if (image == (Image *) NULL)
return(MagickFalse);
message[MaxTextExtent],
*metacontent;
+ /*
+ Write distributed pixel cache metacontent.
+ */
+ image=(Image *) GetValueFromSplayTree(registry,(const void *) session_key);
image=(Image *) GetValueFromSplayTree(registry,(const void *) session_key);
if (image == (Image *) NULL)
return(MagickFalse);
unsigned char
message[MaxTextExtent];
+ /*
+ Write distributed pixel cache pixels.
+ */
image=(Image *) GetValueFromSplayTree(registry,(const void *) session_key);
if (image == (Image *) NULL)
return(MagickFalse);
session[MaxTextExtent];
/*
- Generate session key.
+ Distributed pixel cache client.
*/
shared_secret=GetPolicyValue("shared-secret");
if (shared_secret == (const char *) NULL)
default:
break;
}
- count=dpc_send(client_socket,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
+ if (status == MagickFalse)
break;
if (command == 'd')
break;
MagickPrivate MagickBooleanType OpenDistributePixelCache(
DistributeCacheInfo *server_info,Image *image)
{
- MagickBooleanType
- status;
-
MagickOffsetType
count;
unsigned char
message[MaxTextExtent];
+ /*
+ Open distributed pixel cache.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
assert(image != (Image *) NULL);
count=dpc_send(server_info->file,p-message,message);
if (count != (MagickOffsetType) (p-message))
return(MagickFalse);
- count=dpc_read(server_info->file,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
- return(MagickFalse);
return(MagickTrue);
}
\f
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,unsigned char *metacontent)
{
- MagickBooleanType
- status;
-
MagickOffsetType
count;
unsigned char
message[MaxTextExtent];
+ /*
+ Read distributed pixel cache metacontent.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
if (length != (size_t) length)
return(-1);
p=message;
- *p++='R'; /* read */
+ *p++='R';
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(server_info->session_key);
(void) memcpy(p,®ion->width,sizeof(region->width));
count=dpc_send(server_info->file,p-message,message);
if (count != (MagickOffsetType) (p-message))
return(-1);
- count=dpc_read(server_info->file,length,metacontent);
- if (count != (MagickOffsetType) length)
- return(count);
- count=dpc_read(server_info->file,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
- return(-1);
- return((MagickOffsetType) length);
+ return(dpc_read(server_info->file,length,metacontent));
}
\f
/*
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,unsigned char *pixels)
{
- MagickBooleanType
- status;
-
MagickOffsetType
count;
unsigned char
message[MaxTextExtent];
+ /*
+ Read distributed pixel cache pixels.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
if (length != (size_t) length)
return(-1);
p=message;
- *p++='r'; /* read */
+ *p++='r';
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(server_info->session_key);
(void) memcpy(p,®ion->width,sizeof(region->width));
count=dpc_send(server_info->file,p-message,message);
if (count != (MagickOffsetType) (p-message))
return(-1);
- count=dpc_read(server_info->file,length,pixels);
- if (count != (MagickOffsetType) length)
- return(count);
- count=dpc_read(server_info->file,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
- return(-1);
- return((MagickOffsetType) length);
+ return(dpc_read(server_info->file,length,pixels));
}
\f
/*
unsigned char
message[MaxTextExtent];
+ /*
+ Delete distributed pixel cache.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
p=message;
- *p++='d'; /* delete */
+ *p++='d';
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(server_info->session_key);
count=dpc_send(server_info->file,p-message,message);
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,const unsigned char *metacontent)
{
- MagickBooleanType
- status;
-
MagickOffsetType
count;
unsigned char
message[MaxTextExtent];
+ /*
+ Write distributed pixel cache metacontent.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
if (length != (size_t) length)
return(-1);
p=message;
- *p++='W'; /* write */
+ *p++='W';
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(server_info->session_key);
(void) memcpy(p,®ion->width,sizeof(region->width));
count=dpc_send(server_info->file,p-message,message);
if (count != (MagickOffsetType) (p-message))
return(-1);
- count=dpc_send(server_info->file,length,metacontent);
- if (count != (MagickOffsetType) length)
- return(count);
- count=dpc_read(server_info->file,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
- return(-1);
- return((MagickOffsetType) length);
+ return(dpc_send(server_info->file,length,metacontent));
}
\f
/*
DistributeCacheInfo *server_info,const RectangleInfo *region,
const MagickSizeType length,const unsigned char *pixels)
{
- MagickBooleanType
- status;
-
MagickOffsetType
count;
unsigned char
message[MaxTextExtent];
+ /*
+ Write distributed pixel cache pixels.
+ */
assert(server_info != (DistributeCacheInfo *) NULL);
assert(server_info->signature == MagickSignature);
assert(region != (RectangleInfo *) NULL);
if (length != (size_t) length)
return(-1);
p=message;
- *p++='w'; /* write */
+ *p++='w';
(void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key));
p+=sizeof(server_info->session_key);
(void) memcpy(p,®ion->width,sizeof(region->width));
count=dpc_send(server_info->file,p-message,message);
if (count != (MagickOffsetType) (p-message))
return(-1);
- count=dpc_send(server_info->file,length,pixels);
- if (count != (MagickOffsetType) length)
- return(count);
- count=dpc_read(server_info->file,sizeof(status),(unsigned char *) &status);
- if (count != (MagickOffsetType) sizeof(status))
- return(-1);
- return((MagickOffsetType) length);
+ return(dpc_send(server_info->file,length,pixels));
}