Windows should animate when they are about to get docked at screen edges.
[chromium-blink-merge.git] / net / tools / flip_server / sm_interface.h
blob5bc942f8fa0e5560124a92e852fab3d888410f33
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_TOOLS_FLIP_SERVER_SM_INTERFACE_H_
6 #define NET_TOOLS_FLIP_SERVER_SM_INTERFACE_H_
8 // State Machine Interfaces
10 #include <string>
12 #include "net/tools/flip_server/balsa_headers.h"
14 namespace net {
16 class EpollServer;
17 class SMConnectionPoolInterface;
18 class SMConnection;
20 class SMInterface {
21 public:
22 virtual void InitSMInterface(SMInterface* sm_other_interface,
23 int32 server_idx) = 0;
24 virtual void InitSMConnection(SMConnectionPoolInterface* connection_pool,
25 SMInterface* sm_interface,
26 EpollServer* epoll_server,
27 int fd,
28 std::string server_ip,
29 std::string server_port,
30 std::string remote_ip,
31 bool use_ssl) = 0;
32 virtual size_t ProcessReadInput(const char* data, size_t len) = 0;
33 virtual size_t ProcessWriteInput(const char* data, size_t len) = 0;
34 virtual void SetStreamID(uint32 stream_id) = 0;
35 virtual bool MessageFullyRead() const = 0;
36 virtual bool Error() const = 0;
37 virtual const char* ErrorAsString() const = 0;
38 virtual void Reset() = 0;
39 virtual void ResetForNewInterface(int32 server_idx) = 0;
40 // ResetForNewConnection is used for interfaces which control SMConnection
41 // objects. When called an interface may put its connection object into
42 // a reusable instance pool. Currently this is what the HttpSM interface
43 // does.
44 virtual void ResetForNewConnection() = 0;
45 virtual void Cleanup() = 0;
47 virtual int PostAcceptHook() = 0;
49 virtual void NewStream(uint32 stream_id, uint32 priority,
50 const std::string& filename) = 0;
51 virtual void SendEOF(uint32 stream_id) = 0;
52 virtual void SendErrorNotFound(uint32 stream_id) = 0;
53 virtual size_t SendSynStream(uint32 stream_id,
54 const BalsaHeaders& headers) = 0;
55 virtual size_t SendSynReply(uint32 stream_id,
56 const BalsaHeaders& headers) = 0;
57 virtual void SendDataFrame(uint32 stream_id, const char* data, int64 len,
58 uint32 flags, bool compress) = 0;
59 virtual void GetOutput() = 0;
60 virtual void set_is_request() = 0;
62 virtual ~SMInterface() {}
65 class SMConnectionInterface {
66 public:
67 virtual ~SMConnectionInterface() {}
68 virtual void ReadyToSend() = 0;
69 virtual EpollServer* epoll_server() = 0;
72 class SMConnectionPoolInterface {
73 public:
74 virtual ~SMConnectionPoolInterface() {}
75 virtual void SMConnectionDone(SMConnection* connection) = 0;
78 } // namespace net
80 #endif // NET_TOOLS_FLIP_SERVER_SM_INTERFACE_H_