OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-cogserver commits / 6482f17

Ad the *-is-running>-* message
6482f173322c931a215ca39a9f8879e4fbfbbc4a
by Linas Vepstas <linasvepstas@gmail.com> · 2025-12-14T09:14:52.000Z

Changed files (4) +48 -8

opencog/cogserver/atoms/CogServerNode.cc +15 -0
……@@ -156,6 +156,21 @@ bool CogServerNode::usesMessage(const Handle& key) const
156156 return false;
157157}
158158
159ValuePtr CogServerNode::getValue(const Handle& key) const
160{
161 // Handle the *-is-running?-* query
162 if (PREDICATE_NODE == key->get_type())
163 {
164 static constexpr uint32_t p_is_running = dispatch_hash("*-is-running?-*");
165 const std::string& pred = key->get_name();
166 if (dispatch_hash(pred.c_str()) == p_is_running)
167 return createBoolValue(CogServer::running());
168 }
169
170 // Pass through to base class for all other keys
171 return Atom::getValue(key);
172}
173
159174void CogServerNode::setValue(const Handle& key, const ValuePtr& value)
160175{
161176 // If not a PredicateNode, just store the value.
opencog/cogserver/atoms/CogServerNode.h +1 -0
……@@ -50,6 +50,7 @@ public:
5050 CogServerNode& operator=(const CogServerNode&) = delete;
5151
5252 virtual void setValue(const Handle&, const ValuePtr&);
53 virtual ValuePtr getValue(const Handle&) const;
5354 virtual void setAtomSpace(AtomSpace*) override;
5455 virtual HandleSeq getMessages() const;
5556 virtual bool usesMessage(const Handle&) const;
opencog/cogserver/server/CogServer.h +1 -1
……@@ -109,7 +109,7 @@ public:
109109
110110 void set_max_open_sockets(int);
111111
112 bool running(void) { return _running; }
112 bool running(void) const { return _running; }
113113
114114 /** Get the web server port */
115115 short getWebServerPort() const { return _webServer ? _webServer->getPort() : 0; }
tests/scm/cog-server-test.scm +31 -7
……@@ -88,15 +88,34 @@
8888(define (stop-named-cogserver csn)
8989 (cog-set-value! csn (Predicate "*-stop-*") (VoidValue)))
9090
91;; Helper to check if a cogserver is running
92(define (cogserver-running? csn)
93 (define val (cog-value csn (Predicate "*-is-running?-*")))
94 (and val (car (cog-value->list val))))
95
9196;; ===== Single cogserver =====
9297(define single-telnet-port 17101)
9398(define single-web-port 18181)
94(define single-csn #f)
99
100;; Create the CogServerNode but don't start it yet
101(define single-csn (CogServerNode "cogserver-single"))
102(cog-set-value! single-csn (Predicate "*-telnet-port-*") (FloatValue single-telnet-port))
103(cog-set-value! single-csn (Predicate "*-web-port-*") (FloatValue single-web-port))
104(cog-set-value! single-csn (Predicate "*-mcp-port-*") (FloatValue 0))
105
106;; Test *-is-running?-* before start
107(test-assert "single-not-running-before-start"
108 (not (cogserver-running? single-csn)))
109
110;; Start the cogserver
111(cog-set-value! single-csn (Predicate "*-start-*") (VoidValue))
95112
96113(test-assert "single-start"
97 (begin
98 (set! single-csn (start-named-cogserver "cogserver-single" single-telnet-port single-web-port))
99 (cog-atom? single-csn)))
114 (cog-atom? single-csn))
115
116;; Test *-is-running?-* after start
117(test-assert "single-running-after-start"
118 (cogserver-running? single-csn))
100119
101120(test-assert "single-telnet-reachable"
102121 (can-connect-to-port? single-telnet-port))
……@@ -104,10 +123,15 @@
104123(test-assert "single-web-reachable"
105124 (can-connect-to-port? single-web-port))
106125
126;; Stop the cogserver
127(stop-named-cogserver single-csn)
128
107129(test-assert "single-stop"
108 (begin
109 (stop-named-cogserver single-csn)
110 #t))
130 (not (can-connect-to-port? single-telnet-port)))
131
132;; Test *-is-running?-* after stop
133(test-assert "single-not-running-after-stop"
134 (not (cogserver-running? single-csn)))
111135
112136(test-assert "single-telnet-closed"
113137 (not (can-connect-to-port? single-telnet-port)))