예제 #1
0
/**
 * Description not yet available.
 * \param
 */
dmatrix choleski_decomp_neghess_error(const dmatrix& MM, int& ierror)
{
  ierror=0;
  // kludge to deal with constantness
  dmatrix & M= * (dmatrix *) &MM;
  if (M.colsize() != M.rowsize())
  {
    cerr << "Error in chol_decomp. Matrix not square" << endl;
    ad_exit(1);
  }
  int rowsave=M.rowmin();
  int colsave=M.colmin();
  M.rowshift(1);
  M.colshift(1);
  int n=M.rowmax();

  dmatrix L(1,n,1,n);
#ifndef SAFE_INITIALIZE
    L.initialize();
#endif

  int i,j,k;
  double tmp;
    if (M(1,1)>=0)
    {
      return onerror(L,ierror);
    }
  L(1,1)=sqrt(-M(1,1));
  for (i=2;i<=n;i++)
  {
    L(i,1)=-M(i,1)/L(1,1);
  }

  for (i=2;i<=n;i++)
  {
    for (j=2;j<=i-1;j++)
    {
      tmp=-M(i,j);
      for (k=1;k<=j-1;k++)
      {
        tmp-=L(i,k)*L(j,k);
      }
      L(i,j)=tmp/L(j,j);
    }
    tmp=-M(i,i);
    for (k=1;k<=i-1;k++)
    {
      tmp-=L(i,k)*L(i,k);
    }
    if (tmp<=0)
    {
      return onerror(L,ierror);
    }
    L(i,i)=sqrt(tmp);
  }
  L.rowshift(rowsave);
  L.colshift(colsave);

  return L;
}
예제 #2
0
int main(int argc, const char *argv[])
{
    char c;
    int i, len, n;
    int server_sock, client_sock;
    socklen_t client_len;
    struct sockaddr_in server, client;
    struct in_addr in;

    if( (server_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) 
        onerror("socket");
    else
        printf("create socket OK!\n");
    bzero(&server, sizeof(server));
    server.sin_family = AF_INET;
    server.sin_port = htons(SERVER_PORT);
    server.sin_addr.s_addr = htons(INADDR_ANY);

    if(bind(server_sock, (struct sockaddr *) &server, sizeof(server)) < 0)
        onerror("bind");
    else
        printf("bind address OK!\n");
    if(listen(server_sock, 5) < 0)
        onerror("listen");
    else
        printf("listen OK!\n");
    while(1)
    {
        client_len = sizeof(client);
        if( (client_sock = accept(server_sock, (struct sockaddr *)&client, &client_len )) < 0)
        {
            close(server_sock);
            onerror("accept");
        }
        else
        {
            printf("accept client OK!\n");
            in.s_addr = client.sin_addr.s_addr;
            printf("client ip: %s\n", inet_ntoa(in));
            printf("client port: %d\n",ntohs(client.sin_port));
        }

        while((len = recv(client_sock, buffer, 256, 0)) > 0)
        {
            if(buffer[0] == '.') break;
            for (i = 0; i < len; i++) 
            {
                c = buffer[i];
                buffer[i] = toupper(c);
            }
            n = send(client_sock, buffer, len, 0);
        }
        close(client_sock);
        printf("client close the connect, wait for new connect\n");
    }
    close(server_sock);
    return 0;
    return 0;
}
void WorkerContext::reportException(const String& errorMessage, int lineNumber, const String& sourceURL)
{
    bool errorHandled = false;
    if (onerror())
        errorHandled = onerror()->reportError(errorMessage, sourceURL, lineNumber);

    if (!errorHandled)
        forwardException(errorMessage, lineNumber, sourceURL);
}
예제 #4
0
void WorkerContext::reportException(const String& errorMessage, int lineNumber, const String& sourceURL)
{
    bool errorHandled = false;
    if (!m_reportingException) {
        if (onerror()) {
            m_reportingException = true;
            RefPtr<ErrorEvent> errorEvent(ErrorEvent::create(errorMessage, sourceURL, lineNumber));
            onerror()->handleEvent(this, errorEvent.get());
            errorHandled = errorEvent->defaultPrevented();
            m_reportingException = false;
        }
    }
    if (!errorHandled)
        thread()->workerReportingProxy().postExceptionToWorkerObject(errorMessage, lineNumber, sourceURL);
}
 //--------------------------------------------------------------
 void Protocol::_onerror(Event& args){ onerror(args); }
예제 #6
0
void SocketServer::notifyError(SocketServerError err)
{
    if(!this->onerror)
        return;
    onerror(err);
}
예제 #7
0
void FTPCore::run() {
    ClientThread *clientthread;
    QList<ClientThread*> connections;
    if (!InitWinsock())
    {
        emit onerror("WinSock init failed");
        qDebug() << "Winsock stopped";
        emit onstopped();
        return;
    }
    if ( INVALID_SOCKET == (msocket=socket(AF_INET,SOCK_STREAM,0)))
    {
        emit onerror("Error socket " + QString("%1").arg(WSAGetLastError()));
        WSACleanup();
        qDebug() << "Winsock stopped";
        emit onstopped();
        return;
    }

    sockaddr_in local_addr;
    local_addr.sin_family=AF_INET;
    local_addr.sin_port=htons(CONTROL_PORT);
    local_addr.sin_addr.s_addr=0;
    // вызываем bind для связывания
    if (SOCKET_ERROR == bind(msocket,(sockaddr *) &local_addr, sizeof(local_addr)))
    {

        emit onerror("Error bind " + QString("%1").arg(WSAGetLastError()));
        closesocket(msocket);
        WSACleanup();
        qDebug() << "Winsock stopped";
        emit onstopped();
        return;
    }

    if (listen(msocket, MAX_CLIENTS))
    {
        // Ошибка
        emit onerror("Error listen " + QString("%1").arg(WSAGetLastError()));
        closesocket(msocket);
        WSACleanup();
        emit onstopped();
        qDebug() << "Winsock stopped";
        return;
    }

    SOCKET client_socket;    // сокет для клиента
    sockaddr_in client_addr;    // адрес клиента
    int client_addr_size=sizeof(client_addr);
    u_long flag = 1;
    ioctlsocket(msocket, FIONBIO, &flag);
    fd_set read_s; // Множество
    timeval time_out; // Таймаут
    int res;
    emit onstarted();
    while (true)
    {
        FD_ZERO (&read_s); // Обнуляем множество
        FD_SET (msocket, &read_s); // Заносим в него наш сокет
        time_out.tv_sec = 0;
        time_out.tv_usec = 500000; //Таймаут 0.5 секунды.
        if (SOCKET_ERROR == (res = select (0, &read_s, NULL, NULL, &time_out) ) )
        {
            emit onerror("Select error in FTPCore");
            closesocket(msocket);
            WSACleanup();
            qDebug() << "Winsock stopped";
            emit onstopped();
            return;
        }

        if ((res!=0) && (FD_ISSET (msocket, &read_s)) ) // Использую FD_ISSET только для примера! :)
        {
            client_socket=accept(msocket, (sockaddr *)&client_addr, &client_addr_size);
            QString clientAddr = QString("%1:%2").arg(inet_ntoa(client_addr.sin_addr)).arg(client_addr.sin_port);
            emit onnewconnection(clientAddr);

            clientthread = new ClientThread(client_socket, clientAddr);
            connections.append(clientthread);
            connect(clientthread, SIGNAL(oncloseconnection(QString)),SIGNAL(oncloseconnection(QString)));
            clientthread->start();
        }
        if (terminated) {
            break;
        }
    }
    foreach(ClientThread *client , connections)
    {
        client->closeconnection();
        qDebug() << "Close connection";
        client->wait();
        qDebug() << "wait";
        delete client;
    }
예제 #8
-1
JSValue* JSXMLHttpRequest::getValueProperty(ExecState* exec, int token) const
{
    switch (token) {
    case OnabortAttrNum: {
        return onabort(exec);
    }
    case OnerrorAttrNum: {
        return onerror(exec);
    }
    case OnloadAttrNum: {
        return onload(exec);
    }
    case OnloadstartAttrNum: {
        return onloadstart(exec);
    }
    case OnprogressAttrNum: {
        return onprogress(exec);
    }
    case OnreadystatechangeAttrNum: {
        return onreadystatechange(exec);
    }
    case ReadyStateAttrNum: {
        XMLHttpRequest* imp = static_cast<XMLHttpRequest*>(impl());
        return jsNumber(exec, imp->readyState());
    }
    case ResponseTextAttrNum: {
        XMLHttpRequest* imp = static_cast<XMLHttpRequest*>(impl());
        return jsStringOrNull(exec, imp->responseText());
    }
    case ResponseXMLAttrNum: {
        XMLHttpRequest* imp = static_cast<XMLHttpRequest*>(impl());
        return toJS(exec, WTF::getPtr(imp->responseXML()));
    }
    case StatusAttrNum: {
        ExceptionCode ec = 0;
        XMLHttpRequest* imp = static_cast<XMLHttpRequest*>(impl());
        KJS::JSValue* result = jsNumber(exec, imp->status(ec));
        setDOMException(exec, ec);
        return result;
    }
    case StatusTextAttrNum: {
        ExceptionCode ec = 0;
        XMLHttpRequest* imp = static_cast<XMLHttpRequest*>(impl());
        KJS::JSValue* result = jsString(exec, imp->statusText(ec));
        setDOMException(exec, ec);
        return result;
    }
    }
    return 0;
}