Esempio n. 1
0
int db2orbpkt(Dbptr db,int orb) {

	char			srcname[ORBSRCNAME_SIZE];
	static int		packetsz=0,nbytes;
	double			t;
	static char		*packet=0;
	static Packet	*pkt=0;
	int retcode = 0;
	
	if (pkt == 0) {
		pkt=newPkt();
	} else {
		clrPkt(pkt);
	}
	pkt->pkttype=suffix2pkttype("db");
	pkt->db=db;
	if (stuffPkt(pkt,srcname,&t,&packet,&nbytes,&packetsz) < 0) {
		complain(0,"stuffPkt failed for %s\\n",pkt->pkttype);
		retcode = -1;
	} else if (orbput(orb,srcname,t,packet,nbytes)) {
		complain (0, "orbput fails\n");
		retcode = -1;
	}
	return retcode;
}
Esempio n. 2
0
static int
dbrows2orb(Dbptr db, int orb, char *prefix)
{
	Packet         *pkt;
	char            srcname[ORBSRCNAME_SIZE];
	double          time;
	char           *packet;
	int             nbytes, packetsize = 0;
	Dbptr           tmpdb;
	long            t, nrecords, r, ntables;
	Arr            *records = NULL;
	Tbl            *tables = NULL, *static_tables;
	char           *thistablename;
	Stbl           *stbl;
	char           *s;

	dbuntangle(db, &records);
	tables = keysarr(records);
	ntables = maxtbl(tables);
	if (ntables > 0)
		pkt = newPkt();
	if (prefix)
		strncpy(pkt->parts.src_net, prefix, PKT_TYPESIZE);
	pkt->pkttype = suffix2pkttype("db");
	for (t = 0; t < ntables; t++) {
		thistablename = gettbl(tables, t);
		tmpdb = dblookup(db, 0, thistablename, 0, 0);
		stbl = (Stbl *) getarr(records, thistablename);
		nrecords = maxstbl(stbl);
		if (nrecords > 0) {
			for (r = 0; r < nrecords; r++) {
				tmpdb.record = (long) getstbl(stbl, r);
				pkt->db = tmpdb;
				if (stuffPkt(pkt, srcname, &time, &packet, &nbytes, &packetsize) < 0) {
					elog_complain(0, "stuffPkt fails for pf packet");
					return (-1);
				}
				if (orbput(orb, srcname, time, packet, nbytes) < 0) {
					elog_complain(0, "Couldn't send packet to orb\n");
					return (-1);
				}
			}
		}
	}
	freetbl(tables, 0);
	dbfree_untangle(records);
	freePkt(pkt);
	if (verbose) {
		elog_notify(0, "%s: %d patcket(s) sent with sourcename: %s\n", s = strtime(now()), nrecords, srcname);
		free(s);
	}
	return (0);




}
Esempio n. 3
0
void WriteToOrb(SERVER *orb, UINT8 *das, int verbose, BOOL UseLoc)
{
static int count = 0;
double samprate, tstamp;
char buf[256];
struct reftek_dt dt;
int nbytes;
char *packet;
static int packetsz = 0;
static char srcname[ORBSRCNAME_SIZE];
static char *fid = "WriteToOrb";

/* Only deal with DT packets for which we can get sample rate */

    if (reftek_type(das) != REFTEK_DT) return;

    if (!reftek_dt(&dt, das, TRUE)) {
        rtp_log(RTP_ERR, "%s: DAS pkt dropped (can't decode)\n", fid);
        return;
    }

    if (!DeriveSampleRate(&dt, &samprate)) {
        rtp_log(RTP_ERR, "%s: DAS pkt dropped (unknown sample rate): %s\n",
            fid, reftek_str(das, buf)
        );
        return;
    }

/* Note decompression errors, if any */

    if (dt.dcerr) rtp_log(RTP_ERR, "%s: decompression error %d: %s\n",
        fid, dt.dcerr, reftek_str(das, buf)
    );

/* Convert to GENC format and send to ORB */

    ConvertPacket(&dt, samprate, UseLoc);

    if (stuffPkt(Pkt, srcname, &tstamp, &packet, &nbytes, &packetsz) < 0) {
        rtp_log(RTP_ERR, "stuffPkt routine failed for %s\n", Pkt->pkttype->name);
        return;
    }
    ++count;

    if (verbose) {
        showPkt(0, srcname, tstamp, packet, nbytes, stdout, PKT_TERSE);
    }

    if (orbput(orb->fd, srcname, dt.tstamp, packet, nbytes) != 0) {
        rtp_log(RTP_ERR, "orbput fails\n");
    }
}