Esempio n. 1
0
    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)