1f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/*
2f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Copyright (C) 2010 The Android Open Source Project
3f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
4f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Licensed under the Apache License, Version 2.0 (the "License");
5f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * you may not use this file except in compliance with the License.
6f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * You may obtain a copy of the License at
7f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
8f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *      http://www.apache.org/licenses/LICENSE-2.0
9f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly *
10f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Unless required by applicable law or agreed to in writing, software
11f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * distributed under the License is distributed on an "AS IS" BASIS,
12f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * See the License for the specific language governing permissions and
14f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * limitations under the License.
15f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */
16f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
174bbd47e5507d4c47a4d722216606307e45195a0aMartijn Coenenpackage com.android.nfc.dhimpl;
18f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
194a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport com.android.nfc.DeviceHost;
204a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport com.android.nfc.DeviceHost.LlcpSocket;
214a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton
224a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonimport java.io.IOException;
234a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton
24f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly/**
25f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * LlcpServiceSocket represents a LLCP Service to be used in a
26f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly * Connection-oriented communication
27f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly */
284a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamiltonpublic class NativeLlcpServiceSocket implements DeviceHost.LlcpServerSocket {
29f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mHandle;
30f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mLocalMiu;
31f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mLocalRw;
32f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mLocalLinearBufferLength;
33f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private int mSap;
34f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    private String mServiceName;
35f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
367efbf69a37134ccbd86a1f6b4121f16b4a80eaaeNick Pelly    public NativeLlcpServiceSocket(){ }
37f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
384a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    private native NativeLlcpSocket doAccept(int miu, int rw, int linearBufferLength);
394a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    @Override
404a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    public LlcpSocket accept() throws IOException {
414a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton        LlcpSocket socket = doAccept(mLocalMiu, mLocalRw, mLocalLinearBufferLength);
424a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton        if (socket == null) throw new IOException();
434a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton        return socket;
44f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
45f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly
464a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    private native boolean doClose();
474a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    @Override
484a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton    public void close() throws IOException {
494a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton        if (!doClose()) {
504a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton            throw new IOException();
514a61d3b45e81c0070538f94747a70a49c78f12faJeff Hamilton        }
52f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly    }
53f067256d9556b1e01143f9ae2fd824fa5dc03138Nick Pelly}
54