aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/DrawingBoard/SkNetPipeController.h
blob: 84b1714057fe44d2f56643f093200c5abdbb0879 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * Copyright 2011 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#ifndef SkNetPipeController_DEFINED
#define SkNetPipeController_DEFINED
#include "SkTypes.h"
#include "SkCanvas.h"
#include "SkGPipe.h"
#include "SkSockets.h"
class SkNetPipeController : public SkGPipeController {
public:
    SkNetPipeController(SkCanvas* target);
    ~SkNetPipeController();

    virtual void* requestBlock(size_t minRequest, size_t* actual);
    virtual void notifyWritten(size_t bytes);

    int writeToSocket(SkSocket* sockfd, SkSocket::DataType type);
    void enablePlayback() { fPlayback = true; }
    void disablePlayback() { fPlayback = false; }

private:
    SkGPipeReader   fReader;
    bool            fPlayback;
    void*           fBlock;
    size_t          fBlockSize;
    size_t          fBytesWritten;
    int             fAtomsWritten;
    size_t          fTotalWritten;

    SkGPipeReader::Status   fStatus;
};
#endif