コード例 #1
0
ファイル: util.cpp プロジェクト: panek50/agros2d
QString cacheProblemDir()
{
#ifdef Q_WS_X11
    // fast fix for ht condor
    static QString cch = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
    QDir dirc(cch);
    if (!dirc.exists() && !cch.isEmpty())
        dirc.mkpath(cch);

    // ro system
    if (!dirc.exists())
        cch = tempProblemDir();

    static QString str = QString("%1/%2").
            arg(cch).
            arg(QString::number(QCoreApplication::applicationPid()));
#endif
#ifdef Q_WS_WIN
    static QString str = QString("%1/agros2d/%2").
            arg(QDir::temp().absolutePath()).
            arg(QString::number(QCoreApplication::applicationPid()));
#endif

    QDir dir(str);
    if (!dir.exists() && !str.isEmpty())
        dir.mkpath(str);

    return str;
}
コード例 #2
0
ファイル: sl-h.c プロジェクト: beefcurtains/sl
static int add_cross(int p)
{
  int i, y, n = 20, hn;
  static int tt;
#ifdef DEBUG
  char buf[100];
#endif

  hn = n / 2;
  if ( LOGO == 0) {
    y = LINES / 2 - 5;
  } else {
    y = LINES / 2 - 7;
  }
  for (i = 2; i < D51HIGHT; ++i) {
    my_mvaddstr(y + i, cros0l[i] + p, cros0[i]);
  }
  for (i = 8; i < D51HIGHT; ++i) {
    my_mvaddstr(y + i, p + 5, cros3[i]);
  }
#ifdef DEBUG
  sprintf(buf, "%d", tt);
  my_mvaddstr(0, 0, buf);
#endif

  if ( tt % n >= 0 && tt % n < hn) {
    my_mvaddstr(y + 4, cros0l[5] + p - 1, "O");
    my_mvaddstr(y + 4, cros0l[5] + p + 2, "X");
    my_mvaddstr(y + 5, cros0l[5] + p - 1, " || ");
  } else if ( tt % n >= hn && tt % n < n) {
    my_mvaddstr(y + 4, cros0l[5] + p - 1, "X");
    my_mvaddstr(y + 4, cros0l[5] + p + 2, "O");
    dirc(y, p);
  }
  ++tt;

  return 0;
}
コード例 #3
0
ファイル: fileService.cpp プロジェクト: radeeyjd/PeerBook
//Start the peer server
void * FileServices::peerServer(void * arg) {
//std::cout << "Starting to listen " << std::endl;
    initialize();
    int sent, newsockfd, oldtype;
    struct hostent *serv_addr;
    struct sockaddr_in server;
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons(10090);

    pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);

    //create a socket
    if((serverSock = socket( AF_INET, SOCK_STREAM, 0)) == -1) {
        std::cout << "PeerServer socket call failed" << std::endl;
    }

    //bind the socket
    if((bind(serverSock, (struct sockaddr *)&server, sizeof(server))) == -1) {
        std::cout << "PeerServer Bind Call failed" << std::endl;
    }

    //Start Listening to connections
    if(listen(serverSock, 5) == -1) {
        std::cout << "PeerServer Listen call failed" << std::endl;
    }
    while(keepalive == 1) {

        //Accept connection
        if((newsockfd = accept(serverSock, NULL, NULL)) == -1) {
            std::cout << "PeerServer Accept call failed " << std::endl;

        }
        if(fork() == 0) {
            std::cout << "New Request! " << std::endl;
            int request,rec, sent;
            rec = recv(newsockfd, &request, sizeof(int), 0);
            if(rec == -1) {
                std::cout << "Receive error " << std::endl;
            }
            //Switch on the request type
            switch(request) {
            case 0: {
                //Read file request
                std::cout << "New file read request " << std::endl;
                int fnameSize, ver, recvd, bypass, reqver, mode;
                char fname[] = " ";
                char fdir[] = " ";
                char vers[] = " ";
                std::string fdirV;

                rec = recv(newsockfd, &fnameSize, sizeof(size_t), 0);
                rec = recv(newsockfd, fname, fnameSize, 0); //Assume it already has the file
                rec = recv(newsockfd, &mode, sizeof(int), 0);
                rec = recv(newsockfd, &reqver, sizeof(int), 0);

                ver = getVersion(fname);
                if(mode == 0)
                    strcpy(fdir, "home/current/");
                else
                    strcpy(fdir, "home/stable/");
                strcat(fdir,fname);
                std::string dirc(fdir);
                fdirV.append(dirc);

                sent = send(newsockfd, &ver, sizeof(int), 0);
                rec = recv(newsockfd, &bypass, sizeof(int), 0);

                sprintf(vers, "%d", reqver);
                FILE *pFile;
                char buf[65536], fname1[100];
                int fileSize, n_chunks;
                pFile = fopen(dirc.c_str(), "rb");
                if(bypass == 0 || reqver !=0) {
                    if(mode == 2 && reqver != 0) {
                        fdirV.append(".");
                        fdirV.append(vers);
                        pFile = fopen(fdirV.c_str(), "rb");
                        if(pFile == NULL) {
                            pFile = fopen(dirc.c_str(), "rb");
                        }
                        else {
                        }
                    }
                    fseek(pFile, 0, SEEK_END);
                    fileSize = ftell(pFile);
                    rewind(pFile);
                    sent = send(newsockfd, &fileSize, sizeof(int), 0);
                    fread(buf,1, fileSize,pFile);
                    fclose(pFile);
                    sent = send(newsockfd, buf, fileSize, 0);
                    std::cout << "File " << fdirV <<"  is sent" << std::endl;
                }
                else {
                    std::cout << "File not sent, already the cached version is latest " << std::endl;
                }
                close(newsockfd);
                break;
            }
            case 1: {
                //Write file request
                std::cout << "New file write request " << std::endl;
                int fnameSize, recvd, fileSize;
                char fname[20];
                char fdir[20] = "home/current/";
                rec = recv(newsockfd, &fnameSize, sizeof(size_t), 0);
                rec = recv(newsockfd, fname, fnameSize, 0); //Assume it already has the file
                strcat(fdir,fname);
                FILE *pFile;
                char buf[65536];
                recvd = recv(newsockfd, &fileSize, sizeof(int), 0);
                recvd = recv(newsockfd, buf, fileSize, 0);
                pFile = fopen(fdir, "w");
                fwrite(buf, 1, fileSize, pFile);
                fclose(pFile);
                close(newsockfd);
                std::cout <<"File "<< fdir <<" is updated." << std::endl;
                break;
            }
            case 2: {
                //Commit file to stable version
                initialize();
                std::cout << "A new commit request" << std::endl;
                int fnameSize, recvd, fileSize;
                char fname[] = " ";
                char fdir1[] = "home/current/";
                char fdir2[] = "home/stable/";
                char space[] = " ";

                char dot[] = ".";
                rec = recv(newsockfd, &fnameSize, sizeof(int), 0);
                rec = recv(newsockfd, fname, fnameSize, 0); //Assume it already has the file
                std::string filename(fname);
                Files *file = new Files;
                file = getFileinfo(fname);

                strcat(fdir1,fname);
                strcat(fdir2,fname);

                std::string command;
                command.append("cp ");
                command.append("home/current/");
                command.append(filename);
                command.append(" home/stable/");
                command.append(filename);
                char ver[] = " ";
                sprintf(ver, "%d", file->version);
                std::string mvcmd;
                mvcmd.append("mv ");
                mvcmd.append("home/stable/");
                mvcmd.append(filename);
                mvcmd.append(" home/stable/");
                mvcmd.append(filename);
                mvcmd.append(".");
                mvcmd.append(ver);
                system(mvcmd.c_str());
                system(command.c_str());
                file->version++;
                updatefilelist();

                close(newsockfd);
                break;
            }
            case 3: {
                //New file being added to the VFS
                std::cout << "New file is added to the PeerBook" << std::endl;
                int fnameSize;
                char fname[] = " ";
                rec = recv(newsockfd, &fnameSize, sizeof(int), 0);
                rec = recv(newsockfd, fname, fnameSize, 0); //Assume it already has the file

                char client_IP[20];
                struct sockaddr_in client;
                socklen_t len = sizeof(client);
                if(getpeername(newsockfd, (struct sockaddr*)&client, &len) == -1) {
                    std::cout << "Cannot get IP of Client" << std::endl;
                }
                inet_ntop(AF_INET, &client.sin_addr, client_IP, sizeof(client_IP));

                try {
                    std::ofstream outfile ("fileslist", std::ofstream::out | std::ofstream::app);
                    outfile << fname << " " << client_IP << " 10090 " << "0 " << "0 " << "0 " << std::endl;
                }
                catch (std::ofstream::failure e) {
                    std::cout << "Exception opening/reading/closing file" << std::endl;
                }
                break;
            }
            default: {
                std::cout << "Illegal request" << std::endl;
                break;
            }
            }
            close(newsockfd);
        }

    }
    close(serverSock);
    //pthread_exit(NULL);
}
コード例 #4
0
ファイル: sl-h.c プロジェクト: beefcurtains/sl
static int x_gate(int p)
  {
  int i, y, n = 20, hn;
  int tt;

  hn = n / 2;
  if ( LOGO == 0) {
    y = LINES / 2 - 5;
  } else {
    y = LINES / 2 - 7;
  }

  for (tt = 0; tt <= 20; ++tt) {
    for (i = 0; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, p + 5, cros3[i]);
    }
    for (i = 2; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, cros0l[i] + p, cros0[i]);
    }
    if ( tt % n >= 0 && tt % n < hn) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "O");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "X");
      my_mvaddstr(y + 5, cros0l[5] + p - 1, " || ");
    } else if ( tt % n >= hn && tt % n < n) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "X");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "O");
      dirc(y, p);
    }
    my_mvaddstr(LINES + 1, COLS + 1, "");
    refresh();
    usleep((USLEEP_ARG0_TYPE)WAIT_TIME);
  }
  for (tt = 0; tt <= 10; ++tt) {
    for (i = 0; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, p + 5, cros2[i]);
    }
    for (i = 2; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, cros0l[i] + p, cros0[i]);
    }
    if ( tt % n >= 0 && tt % n < hn) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "O");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "X");
      my_mvaddstr(y + 5, cros0l[5] + p - 1, " || ");
    } else if ( tt % n >= hn && tt % n < n) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "X");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "O");
      dirc(y, p);
    }
    my_mvaddstr(LINES + 1, COLS + 1, "");
    refresh();
    usleep((USLEEP_ARG0_TYPE)WAIT_TIME);
  }
  DIREC = ( DIREC + 1 ) % 2;
  for (tt = 0; tt <= 10; ++tt) {
    for (i = 0; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, p + 5, cros2[i]);
    }
    for (i = 2; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, cros0l[i] + p, cros0[i]);
    }
    if ( tt % n >= 0 && tt % n < hn) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "O");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "X");
      my_mvaddstr(y + 5, cros0l[5] + p - 1, " || ");
    } else if ( tt % n >= hn && tt % n < n) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "X");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "O");
      dirc(y, p);
    }
    my_mvaddstr(LINES + 1, COLS + 1, "");
    refresh();
    usleep((USLEEP_ARG0_TYPE)WAIT_TIME);
  }
  for (tt = 0; tt <= 20; ++tt) {
    for (i = 0; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, p + 5, cros3[i]);
    }
    for (i = 2; i < D51HIGHT; ++i) {
      my_mvaddstr(y + i, cros0l[i] + p, cros0[i]);
    }
    if ( tt % n >= 0 && tt % n < hn) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "O");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "X");
      my_mvaddstr(y + 5, cros0l[5] + p - 1, " || ");
    } else if ( tt % n >= hn && tt % n < n) {
      my_mvaddstr(y + 4, cros0l[5] + p - 1, "X");
      my_mvaddstr(y + 4, cros0l[5] + p + 2, "O");
      dirc(y, p);
    }
    my_mvaddstr(LINES + 1, COLS + 1, "");
    refresh();
    usleep((USLEEP_ARG0_TYPE)WAIT_TIME);
  }

  return 0;
}