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

Organize repository
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Thu, 31 Mar 2022 13:23:08 +0900
parents a4e57a764cac
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;

__code Task1(TQueue* remoteDGMQueue){ 
    FileString* string = NEW(FileString);
    char data[1024] = "moziretsujugemegem"; 
    memcpy(string->str, data, strlen(data));
    string->size = 456;
    printf("%s\n", string->str);
    
    goto remoteDGMQueue->put(string, Task2); 
}

__code Task1_stub(struct Context* context){
    TQueue* remoteDGMQueue = createRemoteDGMQueue(context, service_num);
    goto Task1(context, remoteDGMQueue);
}


__code Task2(TQueue* remoteDGMQueue){
    FileString* string = NEW(FileString);
    char data[1024] = "finish"; 
    memcpy(string->str, data, strlen(data));
    string->size = 789;
    printf("%s", string->str);
    goto remoteDGMQueue->put(string, Task4); 
}

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


__code Task4(TQueue* remoteDGMQueue){
    printf("exit\n"); 
    goto exit_code();
}

__code Task4_stub(struct Context* context){
    TQueue* remoteDGMQueue = (struct TQueue*)Gearef(context, TQueue)->tQueue;
    goto Task4(context, remoteDGMQueue);
}

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();
}