微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oozie - 仅今天小时的协调员

如何解决Oozie - 仅今天小时的协调员

是否可以让 Oozie 协调员只查看今天的时间?例如,如果当前小时是 16 小时,那么每小时运行的作业会返回 00 到 16 吗?

我知道您可以通过以下方式返回前 24 小时:

#include <iostream>
#include <thread>
#include <vector>
#include <atomic>
#include <cstdlib>

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <winsock2.h>
#include <Windows.h>
#include <ws2tcpip.h>

#pragma comment(lib,"Ws2_32.lib")

std::atomic<bool> stopRunning = false;

void client(SOCKET client_socket)
{
    int iResult;
    char buffer[1024];
    fd_set rfds;
    timeval timeout;

    std::cout << "New connection" << std::endl;

    while (!stopRunning.load()) {
        iResult = recv(client_socket,buffer,sizeof(buffer),0);
        if (iResult == SOCKET_ERROR) {
            iResult = WSAGetLastError();
            if (iResult != WSAEWOULDBLOCK) {
                std::cerr << "recv Failed: " << iResult << "\n";
                break;
            }

            FD_ZERO(&rfds);
            FD_SET(client_socket,&rfds);

            timeout.tv_sec = 1;
            timeout.tv_usec = 0;

            iResult = select(0,&rfds,NULL,&timeout);
            if (iResult < 0) {
                iResult = WSAGetLastError();
                std::cerr << "select Failed: " << iResult << "\n";
                break;
            }

            if (iResult == 0)
                continue;
        }
        else if (iResult == 0) {
            std::cout << "Closing connection" << std::endl;
            break;
        }
        else {
            std::cout.write(buffer,iResult);
            std::cout << std::endl;
        }
    }

    //clean up
    closesocket(client_socket);
}

void server()
{
    int iResult;

    sockaddr_in listen_address;
    listen_address.sin_family = AF_INET;
    listen_address.sin_port = htons(1000);
    listen_address.sin_addr.S_un.S_addr = INADDR_ANY;

    SOCKET listen_socket = socket(AF_INET,SOCK_STREAM,0);
    if (listen_socket == INVALID_SOCKET) {
        iResult = WSAGetLastError();
        std::cerr << "socket Failed: " << iResult << "\n";
        return;
    }

    u_long mode = 1;
    if (ioctlsocket(listen_socket,FIONBIO,&mode) == SOCKET_ERROR) {
        iResult = WSAGetLastError();
        std::cerr << "ioctlsocket Failed: " << iResult << "\n";
        closesocket(listen_socket);
        return;
    }

    if (bind(listen_socket,(sockaddr*)&listen_address,sizeof(listen_address)) == SOCKET_ERROR) {
        iResult = WSAGetLastError();
        std::cerr << "bind Failed: " << iResult << "\n";
        closesocket(listen_socket);
        return;
    }

    if (listen(listen_socket,SOMAXCONN) == SOCKET_ERROR) {
        iResult = WSAGetLastError();
        std::cerr << "listen Failed: " << iResult << "\n";
        closesocket(listen_socket);
        return;
    }

    std::vector<std::thread> clients;
    sockaddr client_info;
    int addrlen;
    SOCKET client_socket;
    fd_set rfds;
    timeval timeout;

    while (!stopRunning.load()) {
        FD_ZERO(&rfds);
        FD_SET(listen_socket,&rfds);

        timeout.tv_sec = 1;
        timeout.tv_usec = 0;

        iResult = select(0,&timeout);
        if (iResult < 0) {
            iResult = WSAGetLastError();
            std::cerr << "select Failed: " << iResult << "\n";
            break;
        }

        if (iResult > 0) {
            addrlen = sizeof(client_info);
            client_socket = accept(listen_socket,(struct sockaddr*)&client_info,&addrlen);
            if (client_socket == INVALID_SOCKET) {
                iResult = WSAGetLastError();
                std::cerr << "accept Failed: " << iResult << "\n";
                break;
            }

            if (ioctlsocket(client_socket,&mode) == SOCKET_ERROR) {
                iResult = WSAGetLastError();
                std::cerr << "ioctlsocket Failed: " << iResult << "\n";
                closesocket(client_socket);
                continue;
            }

            threads.push_back(std::thread(client,client_socket));
        }
    }

    closesocket(listen_socket);

    stopRunning = true;
    for (auto &t : threads) {
        t.join();
    }    
}

int main() {
    WSADATA data;
    int iResult = WSAStartup(MAKEWORD(2,2),&data);
    if (iResult != 0) {
        std::cerr << "WSAStartup Failed: " << iResult << "\n";
        return 0;
    }

    std::thread server_thread(server);

    std::system("pause");

    stopRunning = true;
    server_thread.join();

    WSACleanup();
    return 0;
}

但是,我对处理昨天的数据不感兴趣...只是今天的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?