Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
node message if pending or failed
- rawcmd - a raw command buffer to send directly
- options specific to command such as 'URI'
- timeout - timeout in seconds for job completion, default 1 year
- waituntilsent - whether to block until this command has been sent
to the node, default False
- keep - whether to keep the job on our jobs list after it completes,
default False
Returns:
- if command is sent in sync mode, returns the result
- if command is sent in async mode, returns a JobTicket
object which the client can poll or block on later
"""
if not self.nodeIsAlive:
raise FCPNodeFailure("%s:%s: node closed connection" % (cmd, id))
log = self._log
log(DEBUG, "_submitCmd: kw=%s" % kw)
async = kw.pop('async', False)
stream = kw.pop('stream', None)
waituntilsent = kw.pop('waituntilsent', False)
keepjob = kw.pop('keep', False)
timeout = kw.pop('timeout', ONE_YEAR)
job = JobTicket(
self, id, cmd, kw,
verbosity=self.verbosity, logger=self._log, keep=keepjob,
stream=stream)
log(DEBUG, "_submitCmd: timeout=%s" % timeout)
def read(n):
if n > 1:
log(DEBUG, "read: want %d bytes" % n)
chunks = []
remaining = n
while remaining > 0:
chunk = self.socket.recv(remaining)
chunklen = len(chunk)
if chunk:
chunks.append(chunk)
else:
self.nodeIsAlive = False
raise FCPNodeFailure("FCP socket closed by node")
remaining -= chunklen
if remaining > 0:
if n > 1:
log(DEBUG,
"wanted %s, got %s still need %s bytes" % (n, chunklen, remaining)
)
pass
buf = "".join(chunks)
return buf