view src/parallel_execution/examples/socketQueue/Local_test.cbc @ 1022:635ccc391642

Organize repository
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Thu, 31 Mar 2022 13:23:08 +0900
parents 9ca9c36a4633
children 793b21a8ea12
line wrap: on
line source

#include "../../../context.h"
#interface "TQueue.h"
#interface "Integer.h"
#interface "FileString.h"
#interface "DataTransfer.h"
char* service_num;
int wordNum = 0;
int numOfLine = 0;
__code Task1(TQueue* localDGMQueue){ 
    goto gData();
}

__code Task1_stub(struct Context* context){
    TQueue* localDGMQueue = createLocalDGMQueue(context, service_num);
    Gearef(context, TQueue)->tQueue = localDGMQueue;
    goto Task1(context, localDGMQueue);
}

__code gData(TQueue* localDGMQueue){
    goto localDGMQueue->getData(Task2, getEOF); 
}

__code gData_stub(struct Context* context){
    TQueue* localDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue;
    goto gData(context, localDGMQueue);
}

__code Task2(TQueue* localDGMQueue){
    goto localDGMQueue->take(Task3);
}

__code Task2_stub(struct Context* context){
    TQueue* localDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue;
    goto Task2(context, localDGMQueue);
}


__code Task3(TQueue* localDGMQueue, FileString* string){
    printf("take[%s] [num:%d]\n", string->str, string->size);
    numOfLine += 1;
    wordNum += strlen(string->str);
    goto gData();
    //goto localDGMQueue->isEmpty(noEmp, whenEmp);
}

__code Task3_stub(struct Context* context) {
	TQueue* localDGMQueue = Gearef(context, TQueue);
	FileString* string = Gearef(context, TQueue)->data;
	goto Task3(context, localDGMQueue, string);
}

__code whenEmp(TQueue* localDGMQueue){
    printf("wordNum=[%d] & end\n", wordNum);
    goto exit_code();
}

__code noEmp(TQueue* localDGMQueue){
    goto Task2();
}

__code getEOF(TQueue* localDGMQueue){
    printf("wordNum=[%d] lineNum = [%d] & end\n", wordNum, numOfLine);
    printf("EOF & end\n");
    goto exit_code();
}

void init(int argc, char** argv) {
    for (int i = 1; argv[i]; ++i) {
        if (strcmp(argv[i], "-sn") == 0){
            service_num = argv[i+1];
        }
    }
}

int main(int argc, char** argv) {
    printf("main\n");
    init(argc, argv);
    if (service_num == NULL){
        service_num = "8080";
    }
    goto Task1();
}