def capture(self, interest, transport): # print("capture cmd received start processing") interestName = interest.getName() if (interestName.size() >= 7): #right format segmentIndex = interestName.get(6).toSegment() # print "request segmentIndex : ",segmentIndex if segmentIndex == 0: # print("a new picture") #request a new picture self.stream = io.BytesIO() self.stream.flush() self.segmentList = [] self.dataList = [] self.camera.capture(self.stream, 'jpeg') #print("photo caputred in stream") imageBytes = self.stream.getvalue() print ("imageBytes %d" % len(imageBytes)) #segmentation self.segmentNumber = len(imageBytes)/(self.segmentSize+1)+1 print("segmentNumber: %d" % self.segmentNumber) for i in range(self.segmentNumber): startIndex = i*self.segmentSize if (i != self.segmentNumber -1): segBytes = imageBytes[startIndex:(startIndex+self.segmentSize)] else: segBytes = imageBytes[startIndex:] #self.segmentList.append(segBytes) newName = interestName.getPrefix(-1).appendSegment(i) #print newName.toUri() data = Data(newName) metaInfo = MetaInfo() metaInfo.setFinalBlockId(Blob.fromRawStr(str(self.segmentNumber-1))) data.setMetaInfo(metaInfo) #data.setContent(Blob.fromRawStr(self.segmentList[i])) data.setContent(Blob.fromRawStr(segBytes)) self.dataList.append(data) self.sendData(self.dataList[0], transport, sign=False) else: self.sendData(self.dataList[segmentIndex], transport, sign=False)