LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
ag_worker_client.h File Reference

Coordinator-side connections to the ag-worker processes. More...

#include <array>
#include <cerrno>
#include <cstddef>
#include <cstring>
#include <iostream>
#include <stdexcept>
#include <string>
#include <vector>
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <unistd.h>
#include "json.hpp"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for ag_worker_client.h:

Go to the source code of this file.

Classes

struct  line::ag::AgWirePayload
 One agent's static description, in the wire form the worker expects. More...
class  line::ag::AgWorkerPool
 The connections to every configured worker, plus the agent partition. More...

Namespaces

namespace  line
namespace  line::ag

Functions

std::vector< std::array< double, 3 > > line::ag::ag_triplets (const Matrix< double > &m)
 Non-zero entries of M as [row, col, value] triplets, 0-based.

Detailed Description

Coordinator-side connections to the ag-worker processes.

Speaks the protocol of jline.solvers.ag.AgWire: newline-delimited JSON over a plain TCP socket, one object per line. assign ships the STATIC half of each owned agent – its local rate matrix and the passive/active matrices of the actions it takes part in – once per solve, because none of it changes across the fixed point; sweep then carries only the reversed rates, one double per action, which is the entire coupling between agents.

A worker that cannot be reached, or that fails mid-run, is marked dead and its agents fall back to the coordinator. That is not a defensive workaround but a property of the decomposition: an agent depends on the rest of the model only through the reversed rates, so anyone holding them can solve it.

Definition in file ag_worker_client.h.