Coda Distributed File System
mariner.h
Go to the documentation of this file.
1/* BLURB gpl
2
3 Coda File System
4 Release 8
5
6 Copyright (c) 1987-2021 Carnegie Mellon University
7 Additional copyrights listed below
8
9This code is distributed "AS IS" without warranty of any kind under
10the terms of the GNU General Public Licence Version 2, as shown in the
11file LICENSE. The technical and financial contributors to Coda are
12listed in the file CREDITS.
13
14 Additional copyrights
15 none currently
16
17#*/
18
19/*
20 *
21 * Specification of the Venus Mariner facility.
22 *
23 */
24
25#ifndef _VENUS_MARINER_H_
26#define _VENUS_MARINER_H_ 1
27
28class mariner;
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#include <stdio.h>
36
37#ifdef __cplusplus
38}
39#endif
40
41#include "vproc.h"
42
43class plan9server;
44
45const int MWBUFSIZE = 80;
46
47void MarinerInit(void);
48void MarinerMux(int fd, void *udata);
49void MarinerLog(const char *, ...);
51void MarinerReportVolState(const char *volname, const char *realm,
52 const char *state, int cml_entries,
53 const struct VolFlags *vflags);
54void PrintMariners(void);
55void PrintMariners(FILE *);
56void PrintMariners(int);
57
58struct qentry {
59 char *buf;
60 size_t len;
61};
62
63class mariner : public vproc {
64 friend void MarinerInit();
65 friend void MarinerMux(int fd, void *udata);
66 friend void MarinerReport(VenusFid *, uid_t);
67 friend void PrintMariners(int);
68 friend int k_Replace(VenusFid *fid_1, VenusFid *fid_2);
69 friend class plan9server;
70 friend void queue_writer(void *arg);
71
72 static int nmariners;
73
74#define MARINER_QUEUE_LEN 16
75 PROCESS writer;
77 size_t queue_len;
78
79 unsigned dying : 1;
80 unsigned logging : 1; /* for MarinerLog() */
81 unsigned reporting : 1; /* for MarinerReport() */
82 unsigned want_volstate : 1; /* for MarinerReportVolState() */
83 uid_t uid; /* valid iff reporting = 1 */
84 int fd;
85 char commbuf[MWBUFSIZE];
86
87 plan9server *p9srv;
88
89 mariner(int);
90 int operator=(mariner &); /* not supported! */
91 virtual ~mariner();
92
93 /* LWP-aware non-blocking read/write functions */
94 ssize_t read_until_done(void *buf, size_t len);
95 ssize_t queue_buffer(const void *buf, size_t len);
96
97 int Read();
98 int Write(const char *buf, ...);
99 int AwaitRequest() EXCLUDES_TRANSACTION;
100 void Resign(int);
101 void PathStat(char *) EXCLUDES_TRANSACTION;
102 void FidStat(VenusFid *) EXCLUDES_TRANSACTION;
103 void Rpc2Stat();
104
105protected:
106 virtual void main(void) EXCLUDES_TRANSACTION;
107 void write_queued();
108
109public:
110 int IsLogging(void) { return logging; }
111 int WantVolState(void) { return want_volstate; }
112 int write(char *buf, int len) { return queue_buffer(buf, len); }
113};
114
116public:
119};
120
121#endif /* _VENUS_MARINER_H_ */
Definition: mariner.h:115
mariner_iterator()
Definition: mariner.cc:765
mariner * operator()()
Definition: mariner.cc:770
Definition: mariner.h:63
virtual void main(void) EXCLUDES_TRANSACTION
Definition: mariner.cc:552
friend int k_Replace(VenusFid *fid_1, VenusFid *fid_2)
Definition: worker.cc:728
friend void MarinerMux(int fd, void *udata)
Definition: mariner.cc:179
friend void queue_writer(void *arg)
Definition: mariner.cc:316
int IsLogging(void)
Definition: mariner.h:110
friend void MarinerInit()
Definition: mariner.cc:81
int write(char *buf, int len)
Definition: mariner.h:112
friend void MarinerReport(VenusFid *, uid_t)
Definition: mariner.cc:238
friend void PrintMariners(int)
Definition: mariner.cc:305
int WantVolState(void)
Definition: mariner.h:111
void write_queued()
Definition: mariner.cc:401
Definition: 9pfs.h:343
Definition: vproc.h:319
Definition: vproc.h:151
#define EXCLUDES_TRANSACTION
Definition: coda_tsa.h:108
#define MARINER_QUEUE_LEN
Definition: mariner.h:74
const int MWBUFSIZE
Definition: mariner.h:45
void MarinerLog(const char *,...)
Definition: mariner.cc:217
void MarinerMux(int fd, void *udata)
Definition: mariner.cc:179
void MarinerInit(void)
Definition: mariner.cc:81
void PrintMariners(void)
Definition: mariner.cc:294
void MarinerReport(VenusFid *, uid_t) EXCLUDES_TRANSACTION
Definition: mariner.cc:238
void MarinerReportVolState(const char *volname, const char *realm, const char *state, int cml_entries, const struct VolFlags *vflags)
Definition: mariner.cc:265
uid
Definition: pwdtopdbtool.py:40
Definition: lwp.c:94
Definition: venusfid.h:24
Definition: venusvol.h:568
Definition: rpc2.h:588
Definition: lwp.private_pt.h:33
Definition: mariner.h:58
size_t len
Definition: mariner.h:60
char * buf
Definition: mariner.h:59