示例#1
0
int acquireBlockLocks(char* serviceName, int servicePort, char* fileName,
                      int numLocks, int64_t startBlocks[], int64_t lengths[]) {
    int i;
    int lockID;

    MessageClient client = newClient(serviceName, servicePort);

    Message m = newMessage();
    m->type = FILE_LOCK_CLIENT_SERVICE_CLIENT_MESSAGE;
    setStringParam(m, "functionName", "acquireblock");
    setStringParam(m, "fileName", fileName);
    setIntegerParam(m, "numLocks", numLocks);
    
    createLongArrayParam(m, "startblocks", numLocks);
    createLongArrayParam(m, "lengths", numLocks);
    
    for (i = 0; i < numLocks; ++i) {
        setLongArrayParamValue(m, "startblocks", i, startBlocks[i]);
        setLongArrayParamValue(m, "lengths", i, lengths[i]);
    }

    //printf("acquireblocklocks: Message to be sent:\n");
    //printMessage(m);

    Message reply = clientCall(client, m);
    clientDisconnect(client);
    //printf("acquirelocks: Reply:\n");
    //printMessage(reply);
    lockID = getIntegerParam(reply, "lockID");

    destroyMessage(m);
    destroyMessage(reply);

    return lockID;
}
示例#2
0
void releaseBlockLocks(char* serviceName, int servicePort,
                       char* fileName, int lockID) {

    MessageClient client = newClient(serviceName, servicePort);
    Message m = newMessage();
    m->type = FILE_LOCK_CLIENT_SERVICE_CLIENT_MESSAGE;
    setStringParam(m, "functionName", "releaseblock");
    setStringParam(m, "fileName", fileName);
    setIntegerParam(m, "lockID", lockID);
    Message reply = clientCall(client, m);
    clientDisconnect(client);
    
    destroyMessage(m);
    destroyMessage(reply);
}
void destroyInventoryVector(void * selfIn)
{
	assert(selfIn != NULL);

	InventoryVector * self = selfIn;
	decrementReferenceCount(self->hash);
	destroyMessage(self);
}
void destroyBlockHeaders(void * vself){
	assert(vself != NULL);
	BlockHeaders * self = vself;
	uint16_t x;
	for ( x = 0; x < self->numOfHeaders; x++) {
		destroyObject(self->blockHeaders[x]);
	}
	free(self->blockHeaders);
	destroyMessage(self);
}
void destroyTransactionOutput(void * txOut)
{
	assert(txOut != NULL);

	TransactionOutput * self = txOut;

	if (self->scriptObject) {
		decrementReferenceCount(self->scriptObject);
	}

	destroyMessage(self);
}
/*Destructors*/
void destroyTransaction(void * transaction) {
	Transaction * self = transaction;

	uint32_t i;
	for (i = 0; i < self->numOfTransactionInput; i++) {
		decrementReferenceCount(self->inputs[i]); /*handles cleaning up of referenced object once num of references get to zero*/
	}
	free(self->inputs);

	for (i = 0; i < self->numOfTransactionOutput; i++) {
		decrementReferenceCount(self->outputs[i]); /*handles cleaning up of referenced object once num of references get to zero*/
	}
	free(self->outputs);

	destroyMessage(getObject(self));
}
void destroyNetworkAddress(void * vself){
	NetworkAddress * self = vself;
	if (self->ip) decrementReferenceCount(self->ip);
	destroyMessage(self);
}